0

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

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

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

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

4

3 回答 3

2

如果bar节点的值本身包含 < 或 > 或 & ,那么它将破坏解析器。为了防止这种情况发生,您应该在输入时转义所有数据,然后在输出时再次取消转义。

这会将您的文档变成:

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

它确实很糟糕,但这对你来说是 XML。

于 2009-07-20T08:09:40.227 回答
1

实际的文字是&#402;?你需要像&amp;那时一样逃避&符号。

于 2009-07-20T01:14:53.530 回答
0

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

  1. 预处理输入流替换&为例如[$AMPERSAND_CHARACTER$]
  2. 通过 dom4j 修改 XML
  3. 后处理输出流进行反向替换

请参阅代码示例

于 2016-11-08T13:56:24.397 回答