我的一位同事需要開發具有解析多個XML文件來檢查由客戶端施加編程規則的Eclipse插件(例如,沒有xsl:for-each
,或沒有宣告但尚未使用的命名空間)。大約有1000個文件需要定期解析,每個文件包含大約300-400行。XML解析:JDOM還是RegEx?哪個更快?
我們想知道它的解決辦法是更快地做到這一點。我在想JDOM,他在想RegEx。
任何人都可以幫助我們確定哪一個最好?
謝謝
我的一位同事需要開發具有解析多個XML文件來檢查由客戶端施加編程規則的Eclipse插件(例如,沒有xsl:for-each
,或沒有宣告但尚未使用的命名空間)。大約有1000個文件需要定期解析,每個文件包含大約300-400行。XML解析:JDOM還是RegEx?哪個更快?
我們想知道它的解決辦法是更快地做到這一點。我在想JDOM,他在想RegEx。
任何人都可以幫助我們確定哪一個最好?
謝謝
如果所有的檢查都是簡單的「不」或沒有命名空間,一個StAX的解析器將是最好的,因爲你是剛剛流過它的文件,讓所有的開始元素「事件」,然後做你檢查。爲此,解析器需要相對較少的內存。
如果需要指涉檢查,DOM可能會更好,因爲你可以輕鬆地步行樹(可能通過的XPath)。
他正在使用StAX,並且它工作得很好。謝謝你的提示 ! – 3rgo 2011-03-23 13:00:13
DOM,手下來。 RegEx會是瘋狂的。使用用於該作業的工具。
您無法使用RegEx解析遞歸結構。所以除非你有非常簡單的XML文件,否則XML解析速度會更快,代碼也會更加健全(所以你不會花費大量時間來查找錯誤)。
由於文件是相當小的,JDOM將使您的工作更加容易。對於較大的文件,您將不得不使用SAX或類似的解析器(因此您不必將整個文件保存在RAM中)。
由於您無法用正則表達式解析XML文件,因此您並沒有真正的選擇。 – Bombe 2011-03-21 10:12:52
我的解析意思是通過文件來閱讀它的一部分。 – 3rgo 2011-03-21 10:21:04
是的,這就是所謂的「解析」,你仍然不能使用正則表達式來解析XML文件。除非你想把它看作純文本,在這種情況下,它不是一個XML文件,你不能使用JDOM。無論哪種方式,這裏都沒有真正的選擇。 – Bombe 2011-03-21 10:23:01