2

这是我的 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 对象中,但由于某种原因,我无法像这样访问单个节点。

4

2 回答 2

5

只需更改您的 XPath 以表明您正在尝试从根目录搜索。

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

由于您无论如何都是从文档元素中搜索的,因此您也可以使用下面的代码。

 XmlNode IPnode = doc.DocumentElement.SelectSingleNode("Ip");
于 2013-01-04T07:38:36.037 回答
2

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

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

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

于 2015-10-20T06:55:58.750 回答