2

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
}

それとも私は完全に軌道から外れていますか?

4

1 に答える 1