2015-09-12 28 views
0

我有一些清理修改过的XML文件的代码。这些XML文件包含包含有效HTML的CDATA部分。 我想解析XML文件并格式化CDATA值,使其可读性好,即相当输出。 我该如何做到这一点,因为使用“TransformerFactory”打印整个XML文件不会很漂亮地打印CDATA。格式(漂亮打印)java中xml CDATA值的内容

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

+0

我已经实现了一个支持CDATA内漂亮打印的库:https://github.com/greenbird/xml-formatter-core – ThomasRS

回答

2

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

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

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

+0

感谢DSH,我可以使用哪个HTML解析器(我更喜欢默认的用java)... – edbras

+0

我使用JSoup,它工作得很好。 – edbras