在经典ASP中检索节点

时间:2012-12-05 11:29:21

标签: xml soap asp-classic

经典ASP不是我的第一语言,我需要修复错误。我突出了问题,但有点卡住了。

我有以下SOAP响应,Root var正在加载数据:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>  
<checkVatResponse xmlns="urn:ec.europa.eu:taxud:vies:services:checkVat:types">    
<countryCode>GB</countryCode>
<vatNumber>xxxxxxx</vatNumber>
<requestDate>2012-12-05+01:00</requestDate>
<valid>true</valid>
<name>XYZ LIMITED</name>
<address>Jon Street
London</address>
</checkVatResponse>
</soap:Body>
</soap:Envelope>

现在我需要提取'有效节点。我尝试过以下但无济于事

Set Root = oXmlDom.documentElement 

response.write(Root.SelectSingleNode("SOAP:Envelope/SOAP:Body/checkVatResponse/valid").text)
response.write(Root.SelectSingleNode("SOAP:Envelope/SOAP:Body/urn:checkVatResponse/valid").text)    
response.write(Root.SelectSingleNode("//urn:valid").text)

请告诉我明显的问题!

1 个答案:

答案 0 :(得分:0)

好的,这里有几件事。首先,XML区分大小写,因此您需要执行soap:Body而不是SOAP:Body等Select语句。

其次,。documentElement函数返回XML的第一个元素,在本例中为soap:Envelope,因为您使用SelectSingleNode对象中的Root你创建了,然后这告诉解析器寻找以下内容:

<soap:Envelope>
  <soap:Envelope>
    <soap:Body>

所以只需在SelectSingleNode语句中保留第一个分支,例如: response.write(Root.SelectSingleNode("soap:Body/checkVatResponse/valid").text)

希望有所帮助。