В моем приложении я конвертирую один веб-сервис в другой. Я получаю ответ XML как XmlDocument
. Я пытаюсь получить определенные узлы в документе. Я знаю, что будет только один экземпляр узла, который я ищу. Предыдущий реализатор смог получить именно то, что хотел:
XmlNode node = xmlDoc.SelectSingleNode("//result/geometry/location/lat/text()");
Я пытаюсь сделать то же самое со своим ответом, но всегда возвращаю ноль. Я знаю (смутно), как выглядел его XML-ответ, и знаю свой. Но я не могу использовать его синтаксис. Я получаю null
несмотря ни на что. Я использую более сложный оператор:
XmlNode xmlNode = xmlDoc.GetElementsByTagName("StatusDescription").Item(0);
Но, как видите, некрасиво. И, что еще хуже, всякий раз, когда я пытаюсь углубиться более чем на один узел, я получаю нуль:
XmlNode xmlNode = xmlDoc.GetElementsByTagName("/ResourceSets/ResourceSet").Item(0);
Я пробовал вставлять и удалять косые черты в нескольких местах, но безрезультатно. XML, полученный предыдущим реализатором, не представляет собой ничего особенного; это просто XML. Но он может легко прыгать повсюду.
Вот фрагмент его XML-ответа:
<GeocodeResponse>
<status>OK</status>
<result>
<geometry>
<location>
<lat>37.4217550</lat>
<lng>-122.0846330</lng>
</location>
</geometry>
</result>
</GeocodeResponse>
Вот мой фрагмент:
<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/");
? - person Ken White   schedule 16.10.2015