我必须获得一个像这样的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")给您一个名称空间URI为空的QName。您需要使用new QName("urn:PutMake", "PutMake", "")来获取具有所需名称空间URI的QName。

07-28 00:55