试图比较字符串值,但似乎是转换文本

时间:2012-01-07 13:49:35

标签: java string

我的xml在元素中包含文本,如下所示:

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

所以在我的junit测试中我正在做一个assertEqual它失败了,因为我从xml得到的值看起来像:

<#abc123>

在Object上调用toString会解码它吗?或者从StringBuffer转到String?

4 个答案:

答案 0 :(得分:4)

如果您在原始XMl字符串#&lt;abc123&gt;上执行断言,它将失败,因为以下序列是由解析器转换掉的特定于XML的编码:

  • &amp; lt; - 这是'&lt;'的编码字符
  • &amp; gt; - 这是'&gt;'的编码字符

首先编码的原因非常明显 - '&lt;'和'&gt;'字符在XML中具有特殊含义,因此将它们字面地包含在文档中会导致解析器出现问题。

您需要做的是断言将由XML解析器输出的字符串'<#abc123>'

答案 1 :(得分:0)

这可能会对你有帮助,

中查找escapeHtml
StringEscapeUtils

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

答案 2 :(得分:0)

这取决于toString方法的实现。 toString给出了对象的字符串表示,在您的情况下,它将&lt;转换为&lt;。

答案 3 :(得分:0)

我的猜测是,在你在节点上调用getText()的那一刻,你的xml框架会取消文本。也许您以不同的方式访问节点内容以获取原始内容。

相关问题