我试图找到XML文件中的现有内容,并通过使用SelectSingleNode命令对其进行更改。然而,我得到的只是一个NullReferenceException。也许我只是不明白文件路径是如何使用这个特定命令的,但我已经尝试了许多我在网上找到的变体,但都无济于事。谁能帮我找出我做错了什么吗?
这是脚本。
public void saveStuff()
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(@"WorldsWorldData.xml"); //loads the file just fine
XmlNode node = xmlDoc.SelectSingleNode("//World[@ID='002']/Name"); //node = null
node.Value = "New Name"; //NullReferenceException was unhandled
xmlDoc.Save(@"Worldsexample.xml");
}
这是我的XML文件的一个示例。
<?xml version="1.0" encoding="utf-8" ?>
<XnaContent>
<World ID="001">
<Name>
TinyWorld
</Name>
<Size>
4x4
</Size>
<Tiles>
000,000,000,001,
000,000,000,001,
001,001,004,001,
001,001,001,001,
</Tiles>
</World>
<World ID="002">
<Name>
MicroWorld
</Name>
<Size>
2x2
</Size>
<Tiles>
000,000,
001,001,
</Tiles>
</World>
</XnaContent>
相反:
public void saveStuff()
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(@"WorldsWorldData.xml");
XmlElement root = xmlDoc.DocumentElement;
XmlNode node = root.SelectSingleNode("//World[@ID='002']/Name");
node.Value = "New Name";
xmlDoc.Save(@"Worldsexample.xml");
}
您选择使用//
xpath,但当时没有上下文。该语法相对于当前节点。