1

经典 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)

请告诉我明显的问题!

4

1 回答 1

0

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

其次,. documentElement函数返回 XML 的第一个元素,在本例中为soap:Envelope,因此由于您使用SelectSingleNode的是您创建的Root对象,因此这告诉解析器查找以下内容:

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

因此,只需在您的 SelectSingleNode 语句中删除第一个分支,例如: response.write(Root.SelectSingleNode("soap:Body/checkVatResponse/valid").text)

希望有帮助。

于 2013-09-13T18:20:09.850 回答