我想使用xstream将内容附加到xml但是每次运行时都使用xstream.toXml(obj,writer),它是在内容中添加xml声明,我们可以省略xstream中的xml声明吗?
答案 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);