JAXB может только отменить маркер XML, если мыльный конверт уже удален. Тем не менее, ответ SOAP, который я пытаюсь развернуть, имеет декларацию пространства имен в конверте мыла. Если я удаляю мыльный конверт, декларация пространства имен также будет удалена. Таким образом, префикс тегов будет ссылаться на none. Это приводит к ошибке JAXB. Как я могу отменить маркер ответа SOAP с помощью JAXB, если пространство имен объявлено в конверте SOAP?
Аналогичный образец XML, который мне нужен для отмены маршрутизации, приведен ниже:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://example.com/">
<soapenv:Body>
<ns:getNumberResponse>
<number>123456789</number>
</ns:getNumberResponse>
</soapenv:Body>
</soapenv:Envelope>
Это то, что произойдет, если я удалю мыльный конверт:
<ns:getNumberResponse>
<number>123456789</number>
</ns:getNumberResponse>
Если я удалил мыльный конверт, объявление пространства имен также исчезнет. JAXB не сможет размонтировать вышеуказанный xml, потому что отсутствует определение пространства имен для префикса "ns". Таким образом, он вернет сообщение об ошибке "The prefix "ns" for element "ns:getNumberResponse" is not bound."
. Как это исправить?
Обратите внимание, что я использую JDK 1.5. Я не уверен, есть ли способ решить эту проблему в JDK 1.6. Я смог использовать JAXB, потому что я загрузил необходимые банки для использования JAXB.