我的xml在元素中包含文本,如下所示:
<node>#<abc123></node>
所以在我的junit测试中我正在做一个assertEqual它失败了,因为我从xml得到的值看起来像:
<#abc123>
在Object上调用toString会解码它吗?或者从StringBuffer转到String?
答案 0 :(得分:4)
如果您在原始XMl字符串#<abc123>
上执行断言,它将失败,因为以下序列是由解析器转换掉的特定于XML的编码:
首先编码的原因非常明显 - '&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;。
答案 3 :(得分:0)
我的猜测是,在你在节点上调用getText()的那一刻,你的xml框架会取消文本。也许您以不同的方式访问节点内容以获取原始内容。