2

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

4

2 回答 2

3

在 XStream 团队解决问题的同时,您可以做一个解决方法。覆盖createStaxWriterin 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);
于 2014-07-25T09:02:02.860 回答
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 中的一个(一致性)错误,因为它的常见问题解答明确指出它是用于编写代码片段并且不生成 XML 声明(另请参阅此问题)。它没有提供不生产它的方法/设置,因为它永远不应该生产!我会考虑和他们一起提出。

于 2013-04-05T16:11:48.010 回答