【发布时间】:2010-12-09 07:08:10
【问题描述】:
我有一个格式如下的 XML 文件:
<?xml version="1.0" encoding="utf-8"?>
<Snippets>
<Snippet name="abc">
<SnippetCode>
testcode1
</SnippetCode>
</Snippet>
<Snippet name="xyz">
<SnippetCode>
testcode2
</SnippetCode>
</Snippet>
...
</Snippets>
我已经用 sn-p 名称填充了一个列表框,到目前为止它工作正常。例如(顺便说一句,我还没有添加任何真正的 sn-ps),我的列表框包含:
abc
xyz
123
当我单击列表框中的某个项目时,我希望将该项目的 sn-p 代码插入到文本框中。就像单击 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;
}
}
但是,没有插入任何内容,因为它从未找到 sn-p 代码值。我添加了一个 MessageBox.Show("test");在 if 语句中检查它是否执行但它永远不会执行。选中的列表框项目名称和 sn-pname 具有相同的文本,所以它从来没有执行过很奇怪。
有人知道我的代码有什么问题吗?另外,有没有人知道从 sn-p 元素在文档中插入文本的更好主意?这种方法可能不太好,因为大型 XML 文件的性能可能是个问题。
【问题讨论】: