为什么Xml Document的selectSingleNode具有空值?

时间:2013-01-04 07:34:48

标签: 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 Delhi</City>
<ZipCode/>
<Latitude>28.6</Latitude>
<Longitude>77.2</Longitude>
<MetroCode/>
</Response>

这是我将它加载到C#中的XML文档对象的方式:

  XmlDocument doc = new XmlDocument();
  doc.Load("http://freegeoip.net/xml/");//the url

但是当我尝试读取这样的单个节点时:

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

它给了我一个空节点。我已经调试了代码并确认XML确实加载了XMLDocument对象,但出于某种原因我不能像这样进入单个节点。

2 个答案:

答案 0 :(得分:4)

只需更改XPath即表示您正尝试从根目录进行搜索。

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

由于您仍在搜索文档元素,因此您也可以使用以下代码。

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

答案 1 :(得分:1)

比@ ryadavilli更简单,也许更快的实现(侧面执行XPath表达式解析)将是:

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

...应找到文档元素的第一个子元素,其标记名为"Ip"