2017-01-31 19 views
1

При добавлении нового узла в SOAPElement я получаю дополнительный, нежелательный атрибут xmlns = "". Как я могу это решить?JAVAX: нежелательный атрибут

... 
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> 
+0

РЕЗУЛЬТАТ: <Безопасность xmlns = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">

+0

НУЖД: <Безопасность xmlns = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">

ответ

0

Если вы хотите, чтобы элемент был в том же пространстве имен родительского элемента, вы должны явно создать его в это пространство имен, предоставив URI вызову createElement(). Если вы создаете элемент пространства имен без имени (как вы это сделали), то сериализатор вставляет недосказание пространства имен xmlns="", чтобы указать, что этот элемент не находится в том же пространстве имен, что и его родитель.

+0

Спасибо, мистер Майкл Кей, ваш ответ помог мне решить проблему. И теперь мой запрос верен, и веб-сервис возвращает хороший ответ. –