用jdom创建xml,如何设置standalone =“no”属性

时间:2014-01-16 19:10:47

标签: java xml jdom

当我创建一个jdom文档(Document doc = new Document();)时,默认情况下我只在xml标题中看到版本和编码:

<?xml version="1.0" encoding="utf-8" ?>

如何添加独立属性以获取:

<?xml version="1.0" encoding="utf-8" standalone="no" ?>

1 个答案:

答案 0 :(得分:4)

在文档到达JDOM之前,标头通常被XMLParser剥离。我很确定你的意思是你正在查看来自JDOM的输出,它会重新添加XML声明。

您可以通过使用此自定义类创建custom XMLOutput processor ...来调整XML声明的处理方式,覆盖printDeclaration方法并将其更改为执行您需要的操作....

public static final XMLOutputProcessor XMLOUTPUT = new AbstractXMLOutputProcessor() {
    @Override
    protected void printDeclaration(final Writer out, final FormatStack fstack) throws IOException {
        write(out, "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?> ");
        write(out, fstack.getLineSeparator());
    }
};

然后,当您想要使用它时,将其传递给XMLOutputter:

XMLOutputter xout = new XMLOutputter(Format.getPrettyFormat(), XMLOUTPUT);
xout.output(doc, System.out);
很明显,这样做的机制相当麻烦。我会查看有哪些替代方案,也许可以在将来的版本中解决这个问题。