2011-03-21 57 views
1

我的一位同事需要開發具有解析多個XML文件來檢查由客戶端施加編程規則的Eclipse插件(例如,沒有xsl:for-each,或沒有宣告但尚未使用的命名空間)。大約有1000個文件需要定期解析,每個文件包含大約300-400行。XML解析:JDOM還是RegEx?哪個更快?

我們想知道它的解決辦法是更快地做到這一點。我在想JDOM,他在想RegEx。

任何人都可以幫助我們確定哪一個最好?

謝謝

+0

由於您無法用正則表達式解析XML文件,因此您並沒有真正的選擇。 – Bombe 2011-03-21 10:12:52

+0

我的解析意思是通過文件來閱讀它的一部分。 – 3rgo 2011-03-21 10:21:04

+0

是的,這就是所謂的「解析」,你仍然不能使用正則表達式來解析XML文件。除非你想把它看作純文本,在這種情況下,它不是一個XML文件,你不能使用JDOM。無論哪種方式,這裏都沒有真正的選擇。 – Bombe 2011-03-21 10:23:01

回答

2

如果所有的檢查都是簡單的「不」或沒有命名空間,一個StAX的解析器將是最好的,因爲你是剛剛流過它的文件,讓所有的開始元素「事件」,然後做你檢查。爲此,解析器需要相對較少的內存。

如果需要指涉檢查,DOM可能會更好,因爲你可以輕鬆地步行樹(可能通過的XPath)。

+0

他正在使用StAX,並且它工作得很好。謝謝你的提示 ! – 3rgo 2011-03-23 13:00:13

7

DOM,手下來。 RegEx會是瘋狂的。使用用於該作業的工具。

3

我嘗試使用正則表達式解析XML,你正在進入痛苦的世界。如果速度很重要,使用基於事件的API可能比DOM/JDOM快一點。

+0

基於事件的API是什麼意思? – 3rgo 2011-03-21 09:58:26

+0

我認爲他的意思是SAX(http://en.wikipedia.org/wiki/Simple_API_for_XML)。 – redent84 2011-03-21 10:03:04

6

您無法使用RegEx解析遞歸結構。所以除非你有非常簡單的XML文件,否則XML解析速度會更快,代碼也會更加健全(所以你不會花費大量時間來查找錯誤)。

由於文件是相當小的,JDOM將使您的工作更加容易。對於較大的文件,您將不得不使用SAX或類似的解析器(因此您不必將整個文件保存在RAM中)。