1

我正在使用 javax.xml.transform.Transformer 获取 HTML 内容并解析为 XML 文档(我正在使用 Crouton/TagSoup 组合来执行此操作)。不过,我认为这并不是太重要,因为这是我的问题:

我正在转储 Transformer.transform() 进程的输出,并看到在输出中,诸如此类的东西©正在转换为它们的实际符号,在这种情况下是版权符号。

最终,此内容将被重新保存为 HTML 文件,但它不会©显示在文件中,而是放置不应该使用给定 HTML 标准的特殊字符。

有什么方法可以让转换器忽略已经编码的 HTML 字符而不是转换为它们的实际符号?

4

3 回答 3

3

您可以尝试以下方法:调用transformer.setOutputProperty(OutputKeys.ENCODING, "ASCII"). 这样,所有非 ASCII 字符都必须使用字符实体。

于 2012-05-14T19:00:10.663 回答
2

如果是 XSLT 2.0,您可以使用字符映射 - 我相信有人创建了定义所有 HTML 字符实体的字符映射。

由于它是 Java,所以没有什么可以阻止您使用 Saxon,并且 Saxon 有一个序列化属性 saxon:character-representation="entity" 似乎可以满足您的需求(但是,它不理解所有 HTML 定义的实体,只有那些在 Latin-1 中的。)

于 2012-05-09T20:42:06.993 回答
0

这不是我原来问题的正确解决方案,但这是一种让我通过的解决方法。

由于正在转换 HTML 实体,因此在发送内容字符串之前,我使用正则表达式将实体“转换”为另一种格式,因此解析器/转换器不会接收它们。

然后在传出字符串中,我只需使用另一个正则表达式将它们转换回 HTML 实体。

于 2012-05-18T15:27:31.020 回答