2011-10-07 42 views
0

我正在觀看XML文件中的更改,該文件不斷更新,每秒更新不到一秒鐘或更多。更新由外部服務完成。XML文件不斷變化,我如何檢測變化?什麼值/節點被更改並獲得新值?

有沒有辦法檢測這個XML文件上的變化,並建立一個java函數,它將返回哪個節點發生了變化,特定變化節點的新值是什麼?

謝謝你的幫助。

+0

這似乎並不像一個不錯的選擇爲Java的解決方案。你真的不得不檢查每一個更新? – Perception

+0

我認爲XML根本就不是一個好的解決方案。在我看來,您在共享驅動器上有一個XML文件,或者由不同的客戶端同時更新。 – home

+0

「每秒少於一秒更新」。文件的更新是以原子方式進行的,或者是用於同步更新的鎖。因爲如果兩者都不是這樣,您的閱讀器程序似乎可以讀取無效的XML文件。這將使任何*解決方案變得困難。 – Raedwald

回答

0

我還沒有試過這個擴展,但可能是XML-DB的版本擴展eXist可以幫助您滿足您的需求。 http://exist.sourceforge.net/versioning.html 儘管要使用此功能,您需要將更改後的文檔存儲在數據庫中。

+0

謝謝!你認爲這對於每隔不到一秒更新的xml是實用的嗎? – prokaryote

+0

對不起,我沒有經常更新的文檔的經驗:/ – Gandalf

1

用於觀看的實際文件的更改,您可以使用NIO.2(Java 7中)

http://blogs.oracle.com/thejavatutorials/entry/watching_a_directory_for_changes

每次改變後,你可以比較舊的XML對新的。 工具版本比較XML,你可以在這裏找到:

http://www.manageability.org/blog/stuff/open-source-xml-diff-in-java

+0

Yap,我已經有一個文件觀看算法了。您建議的比較API也必須工作,但有一個問題。我如何比較每秒更新的前一個和當前xml?我正在考慮將以前的文檔存儲在類變量中,並將其與當前的xml進行比較。感謝您的任何建議。 - – prokaryote