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>
要素がある場合、内部に少なくとも 1 つ存在する必要がある<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
}
それとも私は完全に軌道から外れていますか?