Попытка сравнить строковые значения, но, кажется, преобразовывает текст - PullRequest
1 голос
/ 07 января 2012

В моем xml есть текст внутри элемента, который выглядит следующим образом:

<node>#&lt;abc123&gt;</node>

Итак, в моем тесте junit я выполняю assertEqual, он не работает, потому что значение, полученное из xml, выглядит следующим образом:

<#abc123>

Расшифровывает ли вызов toString объекта? Или перейти от StringBuffer к String?

Ответы [ 4 ]

4 голосов
/ 07 января 2012

Если вы выполняете утверждение для необработанной строки XMl #&lt;abc123&gt;, это не удастся, потому что следующие последовательности являются специфическими для XML кодировками, которые транслируются вашим анализатором:

  • <;- это кодировка символа '<' </li>
  • >;- это кодировка для символа «>»

Во-первых, причина кодирования довольно очевидна - символы «<» и «>» имеют особое значение в XML, поэтомубуквальное включение их в ваш документ может вызвать проблемы для синтаксического анализатора.

Что вам нужно сделать, это утверждать строку, которая будет выведена вашим синтаксическим анализатором XML, то есть '<#abc123>'.

0 голосов
/ 07 января 2012

Это зависит от реализации метода toString. toString дает строковое представление объекта, в вашем случае он конвертирует &lt; в <. </p>

0 голосов
/ 07 января 2012

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

0 голосов
/ 07 января 2012

это может помочь вам,

искать escapeHtml в

StringEscapeUtils

http://commons.apache.org/lang/api-2.4/org/apache/commons/lang/StringEscapeUtils.html

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