我一直在弄错,并且看不出我做错了什么。
这是代码
private void _FixSave_Offline_Load(object sender, EventArgs e)
{
System.Xml.XmlDocument NewGame = new System.Xml.XmlDocument();
NewGame.Load(Application.StartupPath + "//Files//Checks_Offline.xml");
foreach (System.Xml.XmlNode nameNode in NewGame.SelectNodes("//Games//NewGame"))
{
listView1.Items.Add(nameNode.Attributes["Name"].InnerText);
}
}
这是XML布局
<Games>
<NewGame>
<Name></Name>
<Check></Check>
<Static></Static>
<Location></Location>
<Start></Start>
<Length></Length>
<FoundBy></FoundBy>
<Verified></Verified>
</NewGame>
这是我一直在犯的错误
和visual studio突出显示以下代码:
listView1.Items.Add(nameNode.Attributes["Name"].InnerText);
我已经尝试过不仅使用&#34; //&#34;而且&#34; /&#34;所以任何可以解决这个问题的事情都会受到欢迎,因为我不能为我的生活看到我做错了什么。
答案 0 :(得分:2)
乍一看,您正在查找名称为“Name”的属性,但示例中的任何XML元素都没有属性。
我相信你想要Name节点的内容:
foreach (System.Xml.XmlNode nameNode in NewGame.SelectNodes("//Games//NewGame/Name"))
{
listView1.Items.Add(nameNode.Value);
}
您可能需要稍微使用XPath表达式,具体取决于XML文档的实际结构。
答案 1 :(得分:0)
由于某些原因我无法看到您的XML示例,但请确保您区分Elements and Attributes
另外,请确保属性/元素拼写为“Name”。我认为这是区分大小写的。
-
编辑:现在我能够查看您的XML,看来“名称”实际上是一个元素,而不是一个属性。
答案 2 :(得分:0)
我得到了它的工作。事实证明我错误是由于virtuallist = true。蒂姆我在上面修改了你的代码,以获得我想要的结果。这是任何人用于未来参考的代码。
private void _FixSave_Offline_Load(object sender, EventArgs e)
{
System.Xml.XmlDocument NewGame = new System.Xml.XmlDocument();
NewGame.Load(Application.StartupPath + "//Files//Checks_Offline.xml");
foreach (System.Xml.XmlNode nameNode in NewGame.SelectNodes("//Games//NewGame/Name"))
{
listView1.Items.Add(nameNode.InnerText);
}
}
这里是给定结果的快速屏幕截图。
希望这对其他人也有帮助。感谢上述人士对此表示赞赏,并非常感谢蒂姆。