【问题标题】:Can I "jump around" in an XMLStreamWriter's output stream我可以在 XMLStreamWriter 输出流中“跳来跳去”吗
【发布时间】:2012-07-05 13:03:31
【问题描述】:

我只是对 Stax XMLStreamWriter 有这个问题。最好的例子解释:

假设我需要像这样生成一个文档:

<buddies>
 <buddies name="tim"/>
 <buddies name="toady"/>
</buddies>

,其中 tim 和 toady 家伙是由接收 XMLStreamWriter 作为参数的回调创建的。

writer.writeElement("buddies");
 callback1.writeBuddies(writer);
 callback2.writeBuddies(writer);
write.writeEndElement();

现在的问题是,整个文档必须符合以下模式:如果有 &lt;buddies&gt; 元素,则内部必须至少有一个 &lt;buddy&gt;,所以如果我的回调没有在流上写入任何内容,我'会有一个无效的空元素。问题是:我可以像这样延迟writeElement("buddies")

// Pseudocode
Mark mark = writer.getPos()
boolean written = callback1.writeBuddies(writer)
written |= callback2.writeBuddies(writer)
if (written){
  writer.writeStartElement(mark, "buddies") // write at mark
  writer.writeStopElement() // write at the end of stream
}

还是我完全偏离了轨道?

【问题讨论】:

    标签: stax


    【解决方案1】:

    StAX 是一个只转发的流 API。为了实现您的要求,DOM 解析器的潜在要求是您单独构建节点“伙伴”并将其附加到主文档(如果它不为空)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-18
      • 1970-01-01
      • 1970-01-01
      • 2014-06-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多