繁体   English   中英

用C#编辑XML文件; SelectSingleNode返回null

[英]Editing an XML file in C#; SelectSingleNode returns null

我试图在XML文件中找到现有内容,并通过使用SelectSingleNode命令对其进行更改。 但是,我得到的只是一个NullReferenceException。 也许我只是不知道文件路径如何与此特定命令一起工作,但是我尝试了许多我在网上找到的变体,但无济于事。 有人可以帮我弄清楚我在做什么错吗?

这是脚本。

public void saveStuff()
{
    XmlDocument xmlDoc = new XmlDocument();
    xmlDoc.Load(@"Worlds\WorldData.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(@"Worlds\example.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(@"Worlds\WorldData.xml");

    XmlElement root = xmlDoc.DocumentElement;
    XmlNode node = root.SelectSingleNode("//World[@ID='002']/Name");
    node.Value = "New Name";
    xmlDoc.Save(@"Worlds\example.xml");
}

您选择使用// xpath,但那时没有上下文。 该语法是相对于当前节点的

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM