Двойные экранирующие сущности XML - PullRequest
0 голосов
/ 29 февраля 2012

У меня есть фрагмент XML, скажем:

<root>
  <node>This &amp; that</node>
</root>

Это должно быть отправлено через SOAP в виде строки, наша структура экранируется как:

&lt;root>&lt;node>This &amp;amp; that&lt;/node>&lt;/root>

Конечный пользовательговорит нам, что это не анализирует, и наш модульный тест (правильно) удаляет его.Результирующий фрагмент XML должен быть совместимым - &lt;node>This &amp;amp; that&lt;/node> от передачи должен привести к <node>This &amp; that</node> для отправки на уровень рендеринга, когда он не экранирован, верно?

1 Ответ

2 голосов
/ 01 марта 2012

Ваш анализ кажется правильным.Исходя из имеющихся данных, я могу сделать вывод, что программное обеспечение вашего конечного пользователя неправильно обрабатывает данные, например, путем извлечения XML-текста (неэкранированного, если вы понимаете, что я имею в виду) из сообщения SOAP (а не текстового содержимогодокумент) и пытается разобрать его, или использовать на каком-то этапе что-то отличное от анализатора XML.

Возможно, вы могли бы убедиться, что ваша система и ее системы правильно обрабатывают, например, простой текст, такой как In order to write a literal "&" in XML, HTML, or SGML text one writes "&amp;" instead.

(Я слегка обеспокоен тем, что вы описали юнит-тест как «двунаправленный» текст, так как это наводит на мысль об опасном подходе к проблеме. Если вы дважды «удалите» строку &lt;root>&lt;node>This &amp;amp; that&lt;/node>&lt;/root>, результат будетлибо ошибка, либо строка <root><node>This & that</node></root>, которая не является ни правильно сформированным XML, ни чем-либо еще, что вам, вероятно, нужно.)

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