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>

我正在尝试提取消息的那一部分。谁能帮我从第一个片段中提取第二个片段中显示的代码部分?

到目前为止,我尝试过这样的事情: NodeList inputNodeList = doc.getElementsByTagNameNS(namespaceURI, "sch:input");

但是当我做 int length = inputNodeList.getLength();

我将“长度”的值设为 0,而它应该是 1。任何帮助将不胜感激!

谢谢!

4

1 回答 1

0

将您的DocumentBuilderFactor设置为名称空间感知器,并实现您自己的NameSpaceContext。如果您使用肥皂客户端而不是手动解析 xml,那么痛苦会减少。

于 2013-03-14T15:48:48.403 回答