【发布时间】: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();
现在的问题是,整个文档必须符合以下模式:如果有 <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
}
还是我完全偏离了轨道?
【问题讨论】:
标签: stax