【问题标题】:omitting xml declaration in xstream在 xstream 中省略 xml 声明
【发布时间】:2013-03-25 18:24:54
【问题描述】:

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

【问题讨论】:

  • 什么 XML 声明,可以显示代码吗?
  • @eipark 他(大概)是指 XML 的“标题行”声明 。看我的回答。

标签: java xml xstream


【解决方案1】:

我刚刚遇到了这个问题(使用 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 是用于编写 sn-ps 并且不会产生 XML 声明(另请参阅this question)。它没有提供不生产它的方法/设置,因为它永远不应该生产!我会考虑和他们一起提出。

【讨论】:

  • 在使用 StAX 驱动程序时它也不能很好地打印它:-(
  • 刚刚在 XStream 邮件列表上发布了关于此的内容(作为 Stuart Rossiter,我邪恶的另一个自我):xstream.codehaus.org/list-user.html。目前无法访问他们的错误跟踪系统来提高它。它可能需要一点时间才能出现在浏览器中...
  • 在邮件列表上经过长时间的讨论后,他们同意这是一个问题。查看错误报告:jira.codehaus.org/browse/XSTR-734
【解决方案2】:

在 XStream 团队正在解决此问题的同时,您可以采取一种变通方法。覆盖StaxDriver中的createStaxWriter

    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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-05
    • 2011-07-04
    • 2013-03-23
    • 2012-03-24
    • 1970-01-01
    • 1970-01-01
    • 2012-07-05
    相关资源
    最近更新 更多