Как удалить префикс и пространство имен в SoapElement?JAVA

Программисты JAVA общаются здесь
Anonymous
Как удалить префикс и пространство имен в SoapElement?

Сообщение Anonymous »

колледж, у меня есть цикл, который создает SOAP XML со структурой Nessesary (не спрашивайте о структуре) < /p>

Код: Выделить всё

log.info("Body elements: ");
NodeList nodeList = body.getElementsByTagName("*") ;
for (int i = 0; i < nodeList.getLength(); i++) {
Node node = nodeList.item(i);
if (node.getNodeType() == Node.ELEMENT_NODE) {
log.info(node.getNodeName());

if (node.getNodeName().equals("ns2:request")) {
log.info("Set namespace and prefix for " + node.getNodeName());
SOAPElement childX = (SOAPElement) node;
childX.removeNamespaceDeclaration(childX.getPrefix()) ;
childX.addNamespaceDeclaration("ns3", "http://mayacomp/Generic/Ws");
childX.setPrefix("ns3");
}

else {
if (node.getNodeName().equals("ns2:in") ) {
log.info("Remove namespace for  " + node.getNodeName());
SOAPElement childX = (SOAPElement) node;
childX.removeNamespaceDeclaration(childX.getPrefix()) ;
childX.addNamespaceDeclaration("", "");
childX.setPrefix("");
}

SOAPElement childX = (SOAPElement) node;
childX.removeNamespaceDeclaration(childX.getPrefix()) ;
childX.setPrefix("");
}
}
}
< /code>

В результате я получаю XML: < /p>






Мой вопрос заключается в том, как удалить только xmlns = "http: // mayacomp/generic/ws" from element и получение:

Код: Выделить всё

   




< /code>

[b] update < /strong> < /p>

Я попытался конфигурировать элемент XML: < /p>

    /*Config body elements*/
while (itBodyElements.hasNext())
{
Object o = itBodyElements.next();
SOAPBodyElement bodyElement = (SOAPBodyElement) o;
log.info("Elements from 'Body' element = " + bodyElement.getLocalName() );

Iterator it2 = bodyElement.getChildElements();
while (it2.hasNext())
{
Object requestElement = it2.next();
SOAPBodyElement bodyRequest = (SOAPBodyElement) requestElement;
log.info("  Elements from '"+ bodyElement.getLocalName() + "' element = " + bodyRequest.getLocalName());
log.info("  Delete namespace from IN element " + bodyRequest.getLocalName());
bodyRequest.removeNamespaceDeclaration(bodyRequest.getPrefix());
bodyRequest.setPrefix("");

Iterator it3 = bodyRequest.getChildElements();
while (it3.hasNext())
{ //work with other elements
< /code>

Но это не влияет на «элемент». После бега у меня все еще есть:
< /code> < /p>

 update < /strong> < /p>

Я решил проблему, вызвав WS как следующее: < /p>

getWebServiceTemplate().marshalSendAndReceive(
"URL",
request,
new WebServiceMessageCallback()
{ public void doWithMessage(WebServiceMessage message) {

SaajSoapMessage saajSoapMessage = (SaajSoapMessage)message;

SOAPMessage soapMessage = UtilsClass.createSOAPMessage(in);

saajSoapMessage.setSaajMessage(soapMessage);

}

}
);
method createSoApMessage [/b] Настройка сообщения SOAP с использованием библиотеки javax.xml.soap.

Подробнее здесь: https://stackoverflow.com/questions/339 ... oapelement

Вернуться в «JAVA»