Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.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具有空值?_C#_Asp.net_.net_Xml - Fatal编程技术网

C# 为什么Xml文档的selectSingleNode具有空值?

C# 为什么Xml文档的selectSingleNode具有空值?,c#,asp.net,.net,xml,C#,Asp.net,.net,Xml,这是我的XML文件: <Response> <Ip>120.63.40.84</Ip> <CountryCode>IN</CountryCode> <CountryName>India</CountryName> <RegionCode>07</RegionCode> <RegionName>Delhi</RegionName> <City>New De

这是我的XML文件:

<Response>
<Ip>120.63.40.84</Ip>
<CountryCode>IN</CountryCode>
<CountryName>India</CountryName>
<RegionCode>07</RegionCode>
<RegionName>Delhi</RegionName>
<City>New Delhi</City>
<ZipCode/>
<Latitude>28.6</Latitude>
<Longitude>77.2</Longitude>
<MetroCode/>
</Response>
但是,当我尝试读取这样的单个节点时:

XmlNode IPnode = doc.DocumentElement.SelectSingleNode("Response/Ip");

它给了我一个空节点。我已经调试了代码,并确认XML确实加载到XMLDocument对象中,但由于某些原因,我无法像这样访问单个节点。

只需更改XPath以指示您正在尝试从根目录进行搜索

 XmlNode IPnode = doc.DocumentElement.SelectSingleNode("/Response/Ip");
由于您仍在从文档元素进行搜索,因此也可以使用下面的代码

 XmlNode IPnode = doc.DocumentElement.SelectSingleNode("Ip");

一个比@ryadavilli更简单、也许更快的实现(这一步是XPath表达式解析)是:

XmlNode IPnode = doc.DocumentElement["Ip"];

。。。它应该找到document元素的第一个子元素,该元素的标记名为
“Ip”

那么您是否有与xml关联的名称空间,我想您需要它
XmlNode IPnode = doc.DocumentElement["Ip"];