gpt4 book ai didi

java - 无法读取 SOAP 请求和响应中存在的自定义 xsd 命名空间

转载 作者:行者123 更新时间:2023-12-01 09:09:57 25 4
gpt4 key购买 nike

我正在尝试使用下面的 Java 代码片段读取 SOAP XML 请求和响应的元素节点:

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: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>

在上面的 SOAP XML 请求中,我能够读取具有命名空间 ns2 的 TestSystem 模式的元素节点,而具有命名空间 xyz1 的 TestSystem 模式则不可读。谁能帮我纠正/解决 Java 代码中的问题吗?

最佳答案

您的 SOAP xml 的构造是错误的,这就是它无法正确解析的原因。某些结束标记与开始标记不匹配:

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

关于java - 无法读取 SOAP 请求和响应中存在的自定义 xsd 命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40982256/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com