我可以在XMLStreamWriter输出流中“跳转”

时间:2012-07-05 13:03:32

标签: stax

我只是围绕Stax XMLStreamWriter提出了这个问题。最好用例子解释:

说我需要以某种方式生成一个文档:

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

,其中tim和toady人员是由一些接收XMLStreamWriter作为参数的回调创建的。

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

现在的问题是,整个文档必须符合以下模式:如果有<buddies>元素,则内部必须至少有一个<buddy>,所以如果我的回调都没有写任何内容在流上我有一个无效的空元素。问题是:我能否以某种方式推迟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
}

还是我完全不在赛道上?

1 个答案:

答案 0 :(得分:1)

StAX是一种前向唯一的流API。要实现您所要求的是对DOM解析器的潜在要求,您可以单独构造节点“伙伴”,如果它不为空,则将其附加到主文档。