Flash AS2: как разместить CDATA на сервере? - PullRequest
1 голос
/ 13 января 2009

У меня есть объект XML, который я хочу отправить своему плееру через HTTP POST. Это все хорошо при использовании XML.sendAndLoad.

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

так что если у меня есть:

var xml:XML = new XML("<root><tag><![CDATA[hello]]></tag></root>")  

когда я делаю sendAndLoad, это POSTed:

<root><tag>hello</tag></root>

то же самое происходит, когда я пытаюсь создать XML, используя методы XMLDOM, такие как createElement, createTextNode и appendChild.

Документы AS2 говорят, что CDATA не поддерживается. Есть ли обходной путь для этого? Я думаю, что это можно исправить путем расширения и переопределения класса XML, но я пока не нашел способа сделать это.

Спасибо!

1 Ответ

0 голосов
/ 13 января 2009

Это ожидаемое поведение. CDATA заменяется синтаксическим анализатором XML во время построения дерева. То, что отправлено, является сериализацией дерева, без CDATA.

Если вы хотите отправить исходный XML-код, вы должны отправить его в виде чистых строковых данных.

Кстати, я не вижу, как это может быть проблемой, так как оба семантически идентичны, то есть "<! [CDATA [hello]]>" и "hello" дают одинаковую строку CDATA - это всего лишь синтаксис цитирования, а не существенная разметка. Однако может возникнуть проблема, если CDATA содержит специальные символы. Вы должны будете процитировать их правильно.

...