使用SOAP和Java的addind xmlns命名空间的问题

时间:2013-11-12 14:53:55

标签: 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,但输出是相同的。

为什么会这样?...

1 个答案:

答案 0 :(得分:1)

问题是new QName("PutMake")为您提供了一个QName,其名称空间URI为空。您需要使用new QName("urn:PutMake", "PutMake", "")来获取具有所需命名空间URI的QName。