使用JAVA中的命名空间解析和验证XML

时间:2013-03-14 15:34:45

标签: java dom xml-parsing

我有以下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.任何帮助将不胜感激!

谢谢!

1 个答案:

答案 0 :(得分:0)

将您的DocumentBuilderFactor设为name space awar e,并实施自己的NameSpaceContext。如果使用soap客户端而不是手动解析xml,那就不那么痛苦了。