我试图简单地在我的jdom xml输出中添加一些空白行。我没试过就试过以下内容:
Element root = new Element("root");
root.addContent(new CDATA("\n"));
root.addContent(new Text("\n"));
我认为all-whitespace条目被忽略了,所以我尝试创建我自己的XMLOutputProccessor:
class TweakedOutputProcessor extends AbstractXMLOutputProcessor {
@Override
public void process(java.io.Writer out, Format format, Text text) throws IOException {
if ("\n".equals(text.getText())) {
out.write("\n");
} else {
super.process(out, format, text);
}
}
}\
......这样叫:
public static void printDocument(Document doc) {
XMLOutputter xmlOutput = new XMLOutputter(new TweakedOutputProcessor());
xmlOutput.setFormat(Format.getPrettyFormat());
try {
xmlOutput.output(doc, System.out);
} catch (IOException e) { }
}
这里出乎意料的是,process(..., Text)
从未被调用过。经过一些实验,我发现正在调用process(..., Document)
,但其他process(..., *)
方法都没有。
我还尝试覆盖printText(...)
和printCDATA(...)
方法,但两者都没有被调用 - 即使文本是非空白的!然而,printElement(...)
被调用。
因此...