Как безопасно кодировать XML с помощью ActionScript 3? - PullRequest
2 голосов
/ 07 декабря 2009

Я собираю данные от пользователя и записываю их в строку XML следующим образом:

var myXml: XML = {} UserEnteredText

Это прекрасно, пока пользователь не станет милым со специальными символами, такими как "& <>" и т. Д. Нелегальные символы также являются проблемой, например, 0x19.

Есть ли метод, который санитизирует мой xml и кодирует специальные символы, или мне придется свернуть свой собственный?

Ответы [ 4 ]

3 голосов
/ 19 августа 2010

Это работает , однако:

var s:String = "test<ie>test";
var x:XML = <xml>{s}</xml>;
Alert.show(x.toXMLString());

И это отображается в предупреждении: <xml>test&lt;ie&gt;test</xml>

Получено из Документ Adobe: Сборка и преобразование объектов XML

3 голосов
/ 07 декабря 2009

простое преобразование строки в текстовый узел должно сделать свое дело

var s:String = "test<ie>test";
var x:XML = <xml/>;
x.appendChild(s);
trace(x.toXMLString());//outputs "<xml>test&lt;ie&gt;test</xml>"

также вы можете поместить весь контент в CTADA ...

я не уверен, почему 0x19 должен быть недопустимым ... пробелы и нуль-байты часто удаляются ... но если вам нужны двоичные данные, вам, вероятно, следует использовать base64 ... > вот библиотека <</a>

1 голос
/ 07 декабря 2009

Функция верхнего уровня escape является одним из подходов к этому.

0 голосов
/ 19 августа 2010

Это действительно комментарий к предложению back2dos:

var s:String = "test<ie>test";
var x:XML = <xml/>;
x.appendChild(s);
trace(x.toXMLString());//outputs "<xml>test&lt;ie&gt;test</xml>"

На моей машине при попытке это сгенерировалось исключение:

An ActionScript error has occurred:
TypeError: Error #1085: The element type "ie" must be terminated by the matching end-tag "</ie>".

Так что я все еще ищу ответ на тот же вопрос.

Извините, но у меня еще нет 100 баллов, поэтому я пока не могу комментировать этот пост.

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