在jdom2漂亮的打印中插入空白行

时间:2016-03-04 21:37:18

标签: java xml jdom jdom-2

我试图简单地在我的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(...) 调用。

因此...

  • 这里发生了什么?如果不是这些方法,做什么工作?
  • 如何简单地插入一个空行?

1 个答案:

答案 0 :(得分:1)

在XML中设置值时使用XML xml:space="preserve"。 JDOM尊重XML white space handling