java从XML过滤格式化文本节点
我的代码创建了一个在基本文本编辑器中很难阅读的XML文档。我试着使用transformer.setOutputProperty(OutputKeys.INDENT, "yes")
,这要好得多,但现在当我读回XML时,我有了所有这些以前没有的恼人的文本节点。所有这些文本节点都包含换行符“\n”。当我读回XML时,是否有任何方法可以排除它们,而不必编写代码来自行解析和删除它们?也许是某种过滤器
编辑
我检查了丹尼尔关于{
- 我必须将DOMBuilderFactory置于验证模式
- 验证模式需要DTD-我没有DTD,我正在创建的程序允许用户动态创建新标签李>
因此,让事情变得更复杂一点,有没有一种方法可以在没有DTD的情况下做到这一点?或者,在保存XML文件时,是否有一种简单的方法来创建DTD
# 1 楼答案
大多数XML解析器都有跳过空文本节点的选项,就像它们总是出现一样。至少Xerces是这样。该特性称为
http://apache.org/xml/features/dom/include-ignorable-whitespace
并允许禁用它(如果我读对了,默认情况下会启用它)。说明:
# 2 楼答案
一个XSL Transform就可以了,这正是XSL的作用。操纵XML文件以不同的格式显示它们。这将是非常简单的过滤出有问题的节点,只是通过未触及的其他一切
无论您做什么,请尝试使用正则表达式来解析XML,XML不是一个regular language,使用正则表达式来解析XML是一条通向madness和更糟糕的错误脆弱代码的道路