Амперанд (&) в CDATA, нарушающий XML-запрос POST

Я отправляю запрос xml с символом «&» в CDATA

<![CDATA[red & blue]]>

Он ломает мой XML, заканчиваясь там, где находится &. Есть идеи, как этого избежать? Я также пробовал &amp;, и он все еще ломается в том же месте.

Вот ссылка на запрос и вывод результатов с помощью curl

http://pastebin.com/8Nh3d5Ty

На сервере запущен codeigniter


person user530361    schedule 23.01.2012    source источник
comment
Пожалуйста, опубликуйте XML. То, что вы описываете, не должно происходить, поскольку текст в разделах CDATA не нужно экранировать.   -  person Oded    schedule 24.01.2012
comment
Также скажите нам, что это такое, что все еще ломается. Какое программное обеспечение вы используете и с какими ошибками сталкиваетесь. ПОЖАЛУЙСТА, прочитайте stackoverflow.com/questions/how-to-ask. Если вы не последуете этим предложениям, ваши вопросы будут закрыты.   -  person Jim Garrison    schedule 24.01.2012
comment
Вот мой запрос и вывод pastebin.com/8Nh3d5Ty. Я использую curl для выполнения своих запросов, а сервер работает на codeigniter.   -  person user530361    schedule 24.01.2012


Ответы (1)


Что ты имеешь в виду под "сломать"? Вам нужно быть более конкретным в том, что вы делаете и что идет не так.

Если вы используете синтаксический анализатор SAX, обратите внимание, что SAX может разбивать текстовые узлы на части и доставлять их по одной за раз. Он может сломать узлы где угодно, но синтаксические анализаторы SAX нередко разбивают их на символы, значимые для синтаксического анализатора, такие как '&'.

Сейчас я просмотрел ваше сообщение pastebin (трудно читать желтый на белом...). Я не знаком с инструментами, которые вы используете, но они кажутся сильно сломанными. На самом деле он не распознает раздел CDATA, он сериализует его как "&lt;![CDATA[", что явно неверно. Если он не распознает CDATA, то он, вероятно, будет рассматривать амперсанд как начало ссылки на сущность, поэтому после этого все ставки сняты.

person Michael Kay    schedule 24.01.2012
comment
Привет, Майкл! Я использую инструмент curl для отправки запросов. Я понял проблему как curl.haxx.se/mail/archive -2001-08/0139.html curl делает это ![CDATA[ меняет ‹ на ''. Это проблема скручивания, не обрабатывающая специальные символы в строке данных. Спасибо за ваше время и ответы всем. - person user530361; 25.01.2012