我必须获得像这样的 SOAP 部件:
<PutMake xmlns="urn:PutMake">
<x1/>
<x2/>
....
</PutMake>
所以我使用这段代码来做到这一点:
SOAPElement putMakeElement = soapBody.addChildElement(new QName("PutMake"));
putMakeElement.addNamespaceDeclaration("", "urn:PutMake");
// then adding child elements...
但问题是我得到这样的 SOAP:
<PutMake xmlns="">
<x1 xmlns="urn:PutMake"/>
<x2 xmlns="urn:PutMake"/>
....
</PutMake>
我需要的 PutMake 的“xmlns”参数为空,但子元素的参数已正确设置该参数,而它们根本不应该具有该属性。
我还尝试使用 addAttribute 而不是 addNamespaceDeclaration,但输出是相同的。
为什么会这样?..
最佳答案
问题在于 new QName("PutMake")
为您提供的 QName 的命名空间 URI 为空。您需要使用 new QName("urn:PutMake", "PutMake", "")
来获取具有所需命名空间 URI 的 QName。
关于java - 使用 SOAP 和 Java 添加 xmlns 命名空间的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19932410/