У меня есть XML-файл, отформатированный так:
<?xml version="1.0" encoding="utf-8"?>
<Snippets>
<Snippet name="abc">
<SnippetCode>
testcode1
</SnippetCode>
</Snippet>
<Snippet name="xyz">
<SnippetCode>
testcode2
</SnippetCode>
</Snippet>
...
</Snippets>
Я заполнил список с именем фрагмента, и пока он работает нормально.Например (кстати, я еще не добавил ни одного реального фрагмента), мой список содержит:
abc
xyz
123
Когда я нажимаю на элемент в списке,Я хочу, чтобы код фрагмента этого элемента был вставлен в текстовое поле.Как и при нажатии abc, testcode1 должен быть вставлен в текстовое поле.Я использовал этот код в событии двойного щелчка:
XDocument doc = XDocument.Load(Application.StartupPath + "\\Snippets.xml");
foreach (XElement xe in doc.Elements("Snippets").Elements("Snippet"))
{
if (listBox1.SelectedItem == xe.Attribute("name"))
{
textbox1.Text = xe.Element("SnippetCode").Value;
}
}
Однако ничего не вставляется, потому что он никогда не находит значение кода фрагмента.Я добавил MessageBox.Show («тест»);внутри оператора if, чтобы проверить, выполняется ли он, но никогда не выполняется.Выбранное имя элемента списка и имя фрагмента имеют одинаковый текст, поэтому довольно странно, что он никогда не выполняется.
Кто-нибудь знает, что не так с моим кодом?Кроме того, кто-нибудь знает о лучшей идее вставлять текст в документ из элемента сниппета?Этот метод, вероятно, не очень хорош, поскольку производительность может быть проблемой для больших файлов XML.