2012-05-25 72 views
2

我有一個數據導入工具,它解析了大量的XML(它使用SAX解析器,但適應是我的問題中最少的)。失敗,新部署,系統重新啓動,我不想完全重新開始,所以我需要不時地保存解析器狀態(如果需要,我們可以稱它爲XML光標)。可恢復的XML解析

是否有任何解析器能夠保存它們的狀態並恢復它們(顯然,我必須在恢復時尋找該文件)?

我還沒有找到這樣的解析器,所以我有這個疑問,所以這是我的第二個問題:你有什麼建議我應該如何開始實施它?拿一個SAX解析器實現並挖掘,或者我從頭開始會更好?

如果很重要,我需要xml命名空間,但沒有schema/DTD檢查。

遊標也可以派上用場,用於預解析xml並分發並行處理工作。

+0

失敗發生?它不應該以這種方式發生,你需要再次解析所有的XML,現在應該嗎? – ThomasRS

+0

也許這不是一個失敗。我們稱之爲系統重啓。部署新版本的應用程序。 – wrock

+0

你能指定什麼樣的故障? IO故障? XML解析失敗? – Omnaest

回答

0

真的取決於內容,你可以寫一個XQuery來明確地找到文件中的一個節點。

e.g <Item id="1000"/>

如果是後一個節點的成功的解析堅持它,那麼當你的簡歷通過它(空就等於從第一次啓動)。然後移動到目標節點,移到下一個,然後在y va上。

+0

這是一個選項,但它仍然需要進行全面掃描,直到輸入文件中的位置。我確實擁有帶有ID的記錄,但我發現無關緊要,因爲不經過掃描就無法依賴它們。 – wrock

+0

只有其他選項我能想到的是,如果你可以訪問文件流,並獲得一個尋找位置,儘管如此。打破文件,或者試圖讓文件變得更加強勁將是側面思考的選擇 –