0

次の SOAP メッセージがあります。

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sch="http://test.testMessage.com/v2/TestMessage/schema">
   <soapenv:Header/>
   <soapenv:Body>
      <sch:input>
         <sch:header>
               <sch:MessageName>ChangePurchaseOrder</sch:MessageName>
           </sch:header>
         <sch:payload>
           <sch:xmlData>
           </sch:xmlData>
         </sch:payload>
     </sch:input>
   </soapenv:Body>
  </soapenv:Envelope>

それを(名前空間で)解析し、「入力」ノードだけを新しいドキュメントに取得する必要があります。以下のように:

<sch:input xmlns:sch="http://test.testMessage.com/v2/TestMessage/schema">
     <sch:header>
           <sch:MessageName>ChangePurchaseOrder</sch:MessageName>
       </sch:header>
     <sch:payload>
       <sch:xmlData>
       </sch:xmlData>
     </sch:payload>
 </sch:input>

メッセージのその部分を抽出しようとしています。最初のスニペットから 2 番目のスニペットに示されているコードのセクションを抽出するのを手伝ってくれる人はいますか?

これまでのところ、次のようなことを試しました: NodeList inputNodeList = doc.getElementsByTagNameNS(namespaceURI, "sch:input");

しかし、int length = inputNodeList.getLength(); を実行すると

「長さ」の値を 0 として取得します。ここで、1 であると想定されています。

ありがとう!

4

1 に答える 1

0

DocumentBuilderFactor名前空間に注意して設定し、独自のNameSpaceContextを実装します。手動でxmlを解析する代わりに、soapクライアントを使用する方が苦痛は少なくなります。

于 2013-03-14T15:48:48.403 に答える