1

クラシックASPは私の第一言語ではないので、何かをバグ修正する必要があります。問題を強調しましたが、少し行き詰まりました。

次のSOAP応答がありますが、ルート変数はデータを正常にロードしています。

<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

わかりました、ここでいくつかのこと。soap:Bodyまず、XML では大文字と小文字が区別されるため、Select ステートメントはではなくのようにする必要がありますSOAP:Body

第二に、. documentElement関数は XML の最初の要素を返します。この場合はです。作成したオブジェクトからsoap:Envelope使用しているため、これはパーサーに次を探すように指示しています。SelectSingleNodeRoot

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

したがって、次のように、SelectSingleNode ステートメントの最初のブランチをそのままにしておきます。 response.write(Root.SelectSingleNode("soap:Body/checkVatResponse/valid").text)

それが役立つことを願っています。

于 2013-09-13T18:20:09.850 に答える