在将新节点添加到SOAPElement中时,我得到了一个多余的多余属性xmlns =“”。
我该如何解决?

...
SOAPFactory factory = SOAPFactory.newInstance();
SOAPElement securityElem = factory.createElement("Security", null, "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd");
SOAPElement tokenElem = factory.createElement("UsernameToken");
...
securityElem.addChildElement(tokenElem);


结果:

<Security xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
            <UsernameToken xmlns=""/> </Security>


但是我需要这个:

<Security xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
             <UsernameToken/> </Security>

最佳答案

如果希望元素与其父元素位于相同的名称空间中,则必须通过将URI提供给createElement()调用,在该名称空间中显式创建它。如果您创建一个无名称空间元素(如您所完成),则序列化程序将插入一个名称空间取消声明xmlns="",以指示该元素与其父元素不在同一名称空间中。

09-05 09:23