1

在向 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>
4

1 回答 1

0

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

于 2017-01-31T11:57:20.700 回答