Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C#中编辑XML文件;SelectSingleNode返回null_C#_Xml_Xna 4.0_Nullreferenceexception_Selectsinglenode - Fatal编程技术网

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

在C#中编辑XML文件;SelectSingleNode返回null,c#,xml,xna-4.0,nullreferenceexception,selectsinglenode,C#,Xml,Xna 4.0,Nullreferenceexception,Selectsinglenode,我试图在XML文件中查找现有内容,并使用SelectSingleNode命令对其进行更改。然而,我得到的只是一个NullReferenceException。也许我只是不知道文件路径如何与这个特定的命令一起工作,但我已经尝试了许多在网上找到的变体,但都没有用。谁能帮我找出我做错了什么 这是剧本 public void saveStuff() { XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(@"Worlds\WorldDa

我试图在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>

TinyWorld
4x4
000,000,000,001,
000,000,000,001,
001,001,004,001,
001,001,001,001,
微观世界
2x2
000,000,
001,001,
相反:

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进行选择,但此时没有上下文。该语法是相对于当前节点的