2016-12-05 13 views
0

に存在するカスタムXSD名前空間を読み取ることができません私は、Javaコードの下の部分を使用してSOAP XMLリクエスト&レスポンスの要素ノードを読み込むしようとしています:SOAPリクエスト&レスポンス

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
factory.setNamespaceAware(true); 
DocumentBuilder builder = factory.newDocumentBuilder(); 
Document document = builder.parse(new ByteArrayInputStream(xml.getBytes())); 
NodeList nodeList = document.getElementsByTagName("*"); 
for (int i = 0; i < nodeList.getLength(); i++) { 
    Node node = nodeList.item(i); 
    if (node.getNodeType() == Node.ELEMENT_NODE) { 
     System.out.println("Node Name: " + node.getNodeName() + ", Node Text: " + node.getNodeValue()); 
    } 
} 

みましょうと言いますSOAPのXMLリクエストは以下の通りである:上記のSOAP XMLリクエストで

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soap:Body> 
     <ns1:TestRequest xmlns:ns1="urn:wu:eh:dis:test:xsd:TestRequest-v1.0.0" xmlns:ns2="urn:wu:eh:dis:test:xsd:TestRequest" xmlns:ns3="urn:wu:eh:dis:test:xsd:TestSystem" xmlns:xyz1="urn:wu:eh:dis:test:xsd:TestSystem"> 
     <ns2:TestRequest> 
      <ns3:TestSystem> 
       <ns3:UserName>test</ns3:UserName> 
       <ns3:Password>test</ns3:Password> 
      </ns3:TestSystem> 
     </ns2:TestRequest> 
     <xyz1:TestRequest> 
      <xyz1:TestSystem> 
       <xyz1:UserName>test</xyz1:UserName> 
       <xyz1:Password>test</xyz1:Password> 
      </xyz1:TestSystem> 
     </xyz1:TestRequest> 
     </ns1:TestRequest> 
    </soap:Body> 
</soap:Envelope> 

、私は名前空間のXYZ1とTestSystemスキーマが読めないのに対し、名前空間NS2でTestSystemスキーマの要素ノードを読み取ることができています。誰も私にJavaコードの修正/問題を助けてくれますか?

答えて

1

SOAP xmlの構築が間違っているため、getttingが正しく解析されません。終了タグの一部が開始タグと一致しません:

<xyz1:UserName>test</ns3:UserName> 
<xyz1:Password>test</ns3:Password> 
+0

申し訳ありませんが間違った終了タグが含まれています。サンプルSOAP XMLリクエストを更新しました。 – user2346047

+1

ノードの内容を読み込むためにnode.getTextContent()を使用しなければならなかったが、ns2とxyz1の両方に対して提供した修正済みSOAP XMLから読み込むことができました。 – amishra

関連する問題