修改XML文件是可能的。但是,我想了解的是 -
- >是否有可能使用StAX更新XML文檔,當它遇到的事件。如果這樣做的話,那麼就不會有很大的內存佔用。
示例 - 如果我正在閱讀Customers.xml文件,我需要將每個客戶的狀態信息從StateName更改爲StateCode。然後,當我遇到內容 -
<State>California</State>
我想將其更改爲<State>CA</State>
如何StAX的處理XML的修改使用StAX
所以使用StAX也可以這樣修改源文件立即讀取<State>California</State>
後發生,僅只有經過解析器下一個客戶向前走記錄。 因此,當讀取第二個客戶記錄時,第一個客戶狀態已經在xml中更新爲狀態碼。
或
- >做它暫時保持跟蹤要做出的改變處理更新和解析整個文檔後更新單個去整個文檔。在這種情況下,我會猜測如果大文檔(比如10GB XML文件)發生太多變化,將會有巨大的內存佔用。
示例續 - 因此,當處理第二個客戶時,StAX知道第一個客戶的狀態字段需要更新,但它會將其延遲,直到讀取所有客戶記錄。它可以使用一些內存機制來跟蹤需要更新到XML的內容。
請clarifiy你的第一句話。顯示一些示例代碼。你的意思是就地改變了嗎?我相信這是StAX無法實現的。 – vanje
@vanje,我不是在StAX中編程,而是在評估它爲我的團隊使用它來讀取和修改大型xml文件(1GB +)。但我絕對可以澄清這個問題。我正在編輯問題以使其更清楚。 – RedwinD
for!GB +文件大小,VTD-XML的增量更新功能是您可能想要考慮的東西...對於10GB +文件,stax可悲是您唯一的選擇...... –