format(漂亮打印)java中xml CDATA值的内容

时间:2015-09-12 12:36:42

标签: java xml

我有一些代码可以清理修改过的XML文件。这些XML文件包含包含有效HTML的CDATA部分。 我想解析XML文件并格式化CDATA值,使其可读,即漂亮的输出。 我怎么能这样做,因为使用“TransformerFactory”进行漂亮的打印整个XML文件将无法打印出CDATA。

我认为我应该将CDATA内容值解析并格式化为XML内容,然后将其写回CDATA节点,但这是正确的方法吗? 有没有办法告诉Transformer还将CDATA内容格式化为XML / HTML?

1 个答案:

答案 0 :(得分:2)

XML中的CDATA是任意字符数据。根据定义,它不需要遵循XML和字符实体的规则等。 XML解析器不会对CDATA内容做任何事情,因为它不应该。

您说在您的文档中CDATA包含HTML。请注意,HTML不是XML! (除非它是过时的XHTML)。 HTML允许一个没有关闭的元素,一个没有另一个值的裸属性。

您需要从XML中获取CDATA并将其传递给HTML解析器,执行所需的漂亮转换,然后将其放回XML文档中。