【发布时间】:2015-10-16 01:21:27
【问题描述】:
在我的应用程序中,我正在从一种 Web 服务转换为另一种。我收到了一个XmlDocument 的 XML 响应。我正在尝试获取文档中的特定节点。我知道我要查找的节点只会有一个实例。以前的实施者能够准确地得到他想要的东西:
XmlNode node = xmlDoc.SelectSingleNode("//result/geometry/location/lat/text()");
我正在尝试对我的回复做同样的事情,但总是返回 null。我(模糊地)知道他的 XML 响应是什么样的,也知道我的。但我不能使用他的语法。无论如何,我都会得到null。我正在使用更复杂的语句:
XmlNode xmlNode = xmlDoc.GetElementsByTagName("StatusDescription").Item(0);
但是,如您所见,它很丑。而且 - 更糟糕的是 - 每当我尝试深入一个以上节点时,我都会返回 null:
XmlNode xmlNode = xmlDoc.GetElementsByTagName("/ResourceSets/ResourceSet").Item(0);
我尝试在多个位置插入和删除斜线,但无济于事。前一个实现者取回的 XML 并没有什么特别之处。它只是 XML。但他可以轻松地到处跳。
这是他的 XML 响应的 sn-p:
<GeocodeResponse>
<status>OK</status>
<result>
<geometry>
<location>
<lat>37.4217550</lat>
<lng>-122.0846330</lng>
</location>
</geometry>
</result>
</GeocodeResponse>
这是我的一个sn-p:
<Response xmlns="http://schemas.microsoft.com/search/local/ws/rest/v1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<StatusCode>200</StatusCode>
<StatusDescription>OK</StatusDescription>
<ResourceSets>
<ResourceSet>
<EstimatedTotal>1</EstimatedTotal>
<Resources>
<Location>
...
</Location>
</Resources>
</ResourceSet>
</ResourceSets>
</Response>
知道如何像他一样轻松地遍历 XML 吗?
【问题讨论】:
-
你试过明显的
XmlNode node = xmlDoc.SelectSingleNode("//StatusDescription/text()");和XmlNode node = xmlDoc.SelectSingleNode("/ResourceSets/ResourceSet/");吗?