Как получить вставленный XML из XML - PullRequest
3 голосов
/ 04 апреля 2011

У меня небольшая проблема, при отправке запроса на сервер я получаю XML со встроенным XML.Приложение работает на Android 2.1, поэтому я не могу просто использовать getTextContent() для получения значения, поэтому я использую Node.getFirstChild().getNodeValue();, и для стандартного узла с текстом это работает нормально, но для узла с внедренным в него XML - нет.У кого-нибудь есть совет или была такая же проблема?Как решить эту проблему.

Кстати: когда я проверял тип узла, все они равны 1, поэтому это означает ELEMENT_NODE.

Ответы [ 2 ]

0 голосов
/ 09 февраля 2012

Вы не можете встроить произвольный XML-документ в XML-документ, потому что XML-документы могут содержать последовательности, которые недопустимы с разделами CDATA, которые необходимы для встраивания XML в первую очередь.

Если задача выполняетсяДля того, чтобы внедрить, затем извлечь произвольный документ XML, вы должны закодировать документ XML, а затем внедрить его в раздел CDATA.Причина в том, что закрывающим тегом для CDATA является «]]>», и если (произвольный) внедренный документ содержит раздел CDATA, тег «]]>» для этого раздела CDATA документов закроет раздел CDATA в родительском элементе.

По моему опыту, лучший подход для встраивания XML в XML - это сжатие (потому что кодирование Base64 взорвет его ...), а затем кодирование Base64.Причина, по которой я выбрал этот подход, заключается в том, что он надежен и два преобразования (некоторый вид сжатия и декодирования base64) широко доступны.

0 голосов
/ 04 апреля 2011

Что именно вы получаете от сервера? Что-то вроде;

<?xml version="1.0"?>
<embedded-xml>
  <?xml version="1.0"?>
  <data/>
</embedded-xml>

Или,

<?xml version="1.0"?>
<embedded-xml>
  <data/>
</embedded-xml>

В последнем случае вы можете просто получить узел данных (не значение), нет необходимости анализировать его отдельно, в то время как первый случай не совсем корректен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...