省略xstream中的xml声明

时间:2013-03-25 18:24:55

标签: java xml xstream

我想使用xstream将内容附加到xml但是每次运行时都使用xstream.toXml(obj,writer),它是在内容中添加xml声明,我们可以省略xstream中的xml声明吗?

2 个答案:

答案 0 :(得分:3)

我刚遇到这个问题(使用XStream 1.4.4)。如果您使用StaxDriver而不是JAXP DOM或默认XPP3,则会出现此问题。所以要么切换到:

XStream xstream = new XStream();

(使用类路径上的XPP3和xmlpull JAR)或

XStream xstream = new XStream(new DomDriver());

而不是

XStream xstream = new XStream(new StaxDriver());

这可能是XStream中的(一致性)错误,因为它的FAQ explicitly states用于编写代码片段并且不生成XML声明(另请参阅this question)。它没有提供任何方法/设置来不生成它,因为它永远不会被生产!我会考虑用它们来提高它。

答案 1 :(得分:3)

与此同时,XStream团队正在解决您可能解决的问题。只需覆盖createStaxWriter中的StaxDriver

即可
    StaxDriver driver = new StaxDriver() {
        @Override
        public StaxWriter createStaxWriter(XMLStreamWriter out) throws XMLStreamException {
            //the boolean parameter controls the production of XML declaration
            return createStaxWriter(out, false);  
        }
    };
    XStream xstream = new XStream(driver);