В каком контексте угловые скобки избегают обратной косой черты? - PullRequest
0 голосов
/ 04 августа 2010

немного необычный вопрос - в каком контексте угловые скобки экранируются обратными косыми чертами?

Я отправляю XML-документ (в виде строкового типа xsd) через веб-сервис, который сохраняет его в базе данных, нотам я вижу, что все угловые скобки XML экранированы с помощью обратной косой черты, поэтому мне интересно, где именно (создание Java XML с использованием DocumentBuilder и Transformer, стек Web-сервисов, сохранение в базу данных или какой-либо другой?) он экранируется?Пример:

предназначен XML:

<?xml version="1.0" encoding="UTF-8"?><Params><param name="qqq">1</param></Params>

фактический результат:

\<?xml versionenter code here="1.0" encoding="UTF-8"?\>\<Params\>\<param name="qqq"\>1\</param\>\</Params\>

Ответы [ 2 ]

2 голосов
/ 04 августа 2010

Символы левой угловой скобки не экранируются таким образом в допустимом HTML или XML.В обоих этих форматах '<' символы заменяются на "&lt;".В частности, я не ожидал бы, что совместимый со стандартами XML-компоновщик / сериализатор или стек веб-сервисов будут делать это.

Они не исключаются таким образом в URL-адресах.Если бы вы были достаточно сумасшедшими, чтобы встраивать XML в URL, вы бы использовали кодировку "%xx".

Я не понимаю, почему СУБД должна делать это для символьных данных, которые она хранит.

Единственная распространенная ситуация, в которой я могу вспомнить, где вы можете использовать '\' для экранирования '<', - это в некоторых языках разметки Wiki.

IMO, наиболее вероятное объяснение состоит в том, чтоособый интерес к используемому вами веб-сервису.

1 голос
/ 04 августа 2010

Левая угловая скобка должна быть экранирована как сущность & lt; (а также любой амперсанд и & amp;) - это все, что нужно для выхода в контексте XML.

Я сталкивался с ситуациями, когда угловые скобки имели другое значение в контексте регулярных выражений и должны были быть экранированы, как показано в вашем вопросе. Но никакой синтаксический анализатор XML не посмотрел бы на эту строку и сказал бы: да, это прекрасно. Потому что это не так. Эти обратные слеши не должны быть там, если я что-то упустил.

...