不想在XML文件中更改“实体到”

时间:2011-08-12 10:46:19

标签: java xml

我正在通过文档构建器工厂自动更改某些XML文件 但在其中一个属性实体引用'中更改为'。我不希望这种改变发生。

docBuilderFactory.setValidating(false);
docBuilderFactory.setExpandEntityReferences(false);

但似乎没有任何效果

2 个答案:

答案 0 :(得分:1)

这更像是一个黑客攻击,但你可以在处理之前将其转义:

myXmlString = myXmlString.replaceAll("'", "'").

然后处理器会将'扩展为'

答案 1 :(得分:0)

真正的问题是'只是摆脱撇号的一种方式。这就像在JavaScript中读取字符串:'\'',一旦数据被解释为字符串,解析器就会扩展转义字符(XML中的实体)。也就是说,从原始字符到=的解析步骤从根本上包括这种解释,并且没有好办法。

据推测,真正的问题是转换后输出有效的XML,问题在于解析原始输入字符串并将实体扩展为撇号。幸运的是,这是一个简单的解决方法:如果您知道某些属性可能包含撇号,则可以对输出步骤进行编码以包含搜索&替换pass,'转换为'

(这类似于在JavaScript中编写原始JavaScript字符串并且必须将撇号转换回\'