java - 使用 SOAP 和 Java 添加 xmlns 命名空间的问题

标签 java soap namespaces attributes xml-namespaces

我必须获得像这样的 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/

相关文章:

c++ - 在我自己的命名空间中定义 size_t 会产生歧义或其他错误吗?

java - 尝试使用鼠标监听器在数组中显示图像

java - 从 Excel 电子表格中读取手动插入的文本

java - 如何使用 Apache cxf 为安全(https)soap Web 服务生成 java 类

android - 带命名空间的 Firebase 远程配置

c++ - 静态函数中的命名空间

java - 使项目 JAR 文件保持最新

java - log4j2问题。无法在控制台或文件中记录任何内容

ios - 如何将 SOAP 响应放入 UITableView?

java - 推送网络服务 : Invalid UTF-8 start byte