dom4j将文本转换为特殊字符

时间:2009-07-20 00:31:53

标签: java xml dom4j

我正在使用dom4j来解析我的xml。假设我有这样的事情:

<?xml version="1.0" encoding="UTF-8"?>
<foo>
    <bar>&#402;</bar>
</foo>

当查看“bar”节点的值时,它会返回由“&amp;#402”表示的特殊字符。

有没有办法防止这种情况,只是读入实际的文本位?

3 个答案:

答案 0 :(得分:2)

如果bar节点的值包含&lt;或者&gt;或者&amp;然后它会打破解析器。为了防止这种情况发生,你应该在途中逃避所有数据,然后再次将其取消。

这会将您的文档转换为:

<?xml version="1.0" encoding="UTF-8"?>
<foo>
    <bar>&amp;#402;</bar>
</foo>

它很糟糕,但那是你的XML。

答案 1 :(得分:1)

文本的实际位是&#402;?你需要将&符号转义为&amp;

答案 2 :(得分:0)

如果您在读取XML文件时需要这样来保留数字字符引用,如&#nnnn字符实体引用,如&something,你可以:

  1. 预处理将&替换为例如{1}}的输入流。 [$AMPERSAND_CHARACTER$]
  2. 通过dom4j修改XML
  3. 后处理输出流进行后置替换
  4. 请参阅the example of code