Java SoapMessage añadir espacio de nombres vacío
Estoy llamando a un servicio SOAP de terceros donde cada elemento debe tener un espacio de nombres. Estoy llamando desde Java a un servicio .NET. En algunos elementos, debo incluir “http:/abc.com”. Otras veces, debo incluir xmlns:””. Por ejemplo;
<getyears xmlns="http://example.com">
<ocar xmlns="">
<make xmlns="http://example.com">Ford</make>
<model xmlns="http://example.com">F250
</model></ocar>
</getyears>
Estoy usando javax.xml.soap.*
MessageFactory messageFactory = MessageFactory.newInstance();
SOAPMessage soapMessage = messageFactory.createMessage();
...
QName bodyName = new QName("http://example.com", "GetAircraftDueListItems");
SOAPElement soapBodyElement = soapBody.addBodyElement(bodyName);
QName qName = new QName("", "oCar");
SOAPElement carEement = soapBodyElement.addChildElement(qName);
Por defecto, esto produce la siguiente salida que es rechazada por el servicio porque falta el espacio de nombres “” en oCar.
<getyears xmlns="http://example.com">
<ocar>
<make xmlns="http://example.com">Ford</make>
<model xmlns="http://example.com">F250
</model></ocar>
</getyears>
Parece que se ignora un espacio de nombres vacío. ¿Hay alguna manera de forzar al elemento a incluir xmlns=””?
Gracias.
davy.ai
Sí, puedes incluir el atributo xmlns=”” usando el método addNamespaceDeclaration() de la clase SOAPElement. Aquí tienes un ejemplo:
Esto producirá la siguiente salida, que incluye el atributo de espacio de nombres vacío en el elemento oCar:
Espero que esto te ayude!