私はフォーマット変換のためにxmlライターで作業しています。私は、StAX API(正確にはカーソルAPI)を使用することを決めました。なぜなら、ストリーミング機能のためです(入力ファイルはかなり大きく、セグメントごとに書き込む必要があります)。私は、入力ファイルから解析された値を格納するためにデータ形式(いくつかのクラス)を使用しています。私はまた、writeNodeメソッドを持つxmlファイルの記述のためのいくつかのクラスを作成しました。このメソッドは、次のようになります。JavaでStaxを使用しているときに空のxmlノードに関する問題
public void writeNode(Object object){
writer.writeStartElement();
... some writeNode calls of the children nodes
writer.writeEndElement();
}
名「ライター」を持つオブジェクトがStAXStreamWriterクラスのインスタンスです。 私の問題は、時にはこれらの子ノードが空であることです。これらの場合、親ノードはまったく書き込まれるべきではありません。現在のノードの開始タグはすでに記述されているため、現在は空のノードを生成しています。私が知っている限り、これは元に戻すことはできません。 この問題を解決するための任意のアイデアですか?
よろしく
ラース
更新:
私が思うに、私は解決策を見つけました。 XMLStreamWriterインターフェイスを実装する独自のクラスを作成します。このクラスでは、最初の属性またはノード値が書き込まれるまで、開始タグを格納するためにキューまたはリストデータ構造を使用します。
更新2:
ここで私の解決策をより正確に説明します。私は標準的なストリームライタークラスの周りに新しいクラスをラップするためにデコレータデザインパターンを使用しました。このクラスにはArrayListがあり、WriteCharacterメソッドが呼び出されるまで開始タグが格納されます。