#xml #xpath
#xml #xpath
Вопрос:
Я пытаюсь извлечь пару узлов из следующего xml:
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soap:Body>
<CheckPersonResponse xmlns="http://test.net/crs/">
<CheckPersonResult>
<xml xmlns="http://test.com/webservices/crs2/">
<requestid>933ca7df-6f25-49d9-8144-692e9f18cf27</requestid>
<customernumber>xxx</customernumber>
<reference>xx</reference>
<product>xxx</product>
<input>
<customernumber>xx</customernumber>
<reference>xx</reference>
<name>xx</name>
<initials>xx</initials>
<prefix>xx</prefix>
<gender>xx</gender>
<birthdate>xxx</birthdate>
<streetname>x</streetname>
<housenumber>x</housenumber>
<extension>Axx</extension>
<postcode>xx</postcode>
<city>xx</city>
<country />
<phonenumber1 />
<phonenumber2 />
<emailaddress />
<bankaccount />
<referencedate>xxx</referencedate>
<typeofclaim>xx</typeofclaim>
<claimdate>xxx</claimdate>
<claimamount>xx</claimamount>
</input>
<result>
<reference>xxx</reference>
<personalscore>0</personalscore>
<statisticalscore>0</statisticalscore>
<paymentscore>0</paymentscore>
<overallscore>0</overallscore>
<addressindicator />
</result>
</xml>
</CheckPersonResult>
</CheckPersonResponse>
</soap:Body>
</soap:Envelope>
Где я хочу получить все узлы в теге <result>
, как я могу выбрать все узлы с помощью XPath и использовать их в VBS?
Комментарии:
1. Об этом спрашивали много раз раньше. Поиск. (Не говоря уже о том, что в MSDN есть официальная документация, которая объясняет эти вещи.)
2. Я понимаю, что мне нужно установить xmlns, хотя с xpath xml: xml, даже если он не определен, он не возвращает ошибку…
3. Вы не показываете свой код, не объясняете, что вы пробовали, не ссылаетесь на сообщения об ошибках… И на этом сайте и в других местах в Интернете есть сотни готовых к копированию и вставке примеров кода, которые решают именно эту проблему. Действительно. Потратьте 20 минут на поиск, и вы наткнетесь по крайней мере на один, а возможно, и больше.
Ответ №1:
Найдено решение:
namespaces = Array( _
"xmlns:s='http://test.nl/webservices/crs2/'", _
"xmlns:c='http:/test.net/crs/'", _
"xmlns:soap='http://www.w3.org/2003/05/soap-envelope'", _
"xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'", _
"xmlns:xsd='http://www.w3.org/2001/XMLSchema'" _
)
xmlhttp.responseXML.setProperty "SelectionNamespaces", Join(namespaces, " ")
xpath = "/soap:Envelope/soap:Body/c:CheckPersonResponse/c:CheckPersonResult/s:xml/s:result/s:*"
Set NodeList = xmlhttp.responseXML.selectNodes(xpath)