这是我的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对象,但出于某种原因我不能像这样进入单个节点。
答案 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"
。