我正在使用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();
}
名稱爲「writer」的對象是StAXStreamWriter類的實例。 我的問題是,有時這些孩子節點是空的。在這些情況下,父節點根本不應寫入。現在我正在生成空節點,因爲當前節點的開始標記已被寫入。據我所知這不能逆轉。 任何想法來解決這個問題?
問候
拉爾斯
更新:
我想,我找到了解決辦法。我將編寫自己的類,它實現了XMLStreamWriter接口。在這個類中,我將使用隊列或列表數據結構來存儲開始標記,直到寫入第一個屬性或節點值。
更新2:
下面是我的解決方案的更精確的描述。我使用了裝飾器設計模式來圍繞標準Streamwriter類包裝我的新類。這個類有一個ArrayList,其中存儲Start標籤直到調用writeCharacter方法。