Преобразовать xml в виде строки
-
22-09-2019 - |
Вопрос
у меня есть сценарий, в котором мне нужно отправить xml в виде содержимого тега в сообщении запроса SOAP, например, веб-сервису
<arg_1><xml version="1.0" encoding="UTF-8"?><sometag><somemoretag>abcd</somemoretag></sometag></arg_1></code>
arg_1 является строковым параметром веб-сервиса.Итак, я привожу для этого раздел CDATA
<arg_1><![CDATA[<xml version="1.0" encoding="UTF-8"?><sometag><somemoretag>abcd</somemoretag></sometag>]]></arg_1>
Но это продолжает вызывать у меня исключение
org.xml.sax.SAXException org.xml.SAXException:ВСWS3084E:Ошибка:SimpleDeserializer обнаружил дочерний элемент, который НЕ ожидался, в чем-то, что он пытался десериализовать.Анализируемое сообщение:
Я продолжаю получать это исключение.Кто-нибудь видел это раньше??
Решение
Есть несколько способов, которыми вы могли бы справиться с этим -
- Удалите XML Prolog и вставьте исходный XML-документ в содержимое элемента в другом документе.
<arg_1><sometag><somemoretag>abcd</somemoretag></sometag></arg_1>
- Экранируйте исходный XML-документ, как и любое другое текстовое содержимое, и вставьте полученный текст в содержимое элемента.
<arg_1><sometag><somemoretag>abcd</somemoretag></sometag></arg_1>
Другие советы
Я столкнулся с аналогичной проблемой, когда мой xml не находился должным образом внутри CDATA.Чтобы теги обрабатывались как строка, вы должны использовать, как показано ниже:
<![CDATA[ ---your xml---- ]]>
Однако вы еще не использовали ?до версии xml.Тег должен быть
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
В вашем случае его <xml version="1.0" encoding="UTF-8" standalone="yes"?>
.