解析和JAVA
问题描述:
确认与命名空间的XML,我有以下的SOAP消息:解析和JAVA
<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();
我将“length”的值设为0,其中as,它应该是1.任何帮助将不胜感激!
谢谢!
答
将您的DocumentBuilderFactor设置为name space aware,并实施您自己的NameSpaceContext。如果您使用soap客户端而不是手动解析xml,那将会不那么痛苦。