2014-11-17 58 views
1

我目前使用libxml庫的SAX接口來解析大小(大約60000)大小小於1Mb的XML文檔。我選擇了SAX,因爲我認爲這將是最有效的。在這個用例中,與使用DOM解析器一樣,在性能上會有很大差異嗎?使用libxml SAX解析器處理大量嵌套元素

另外,在我目前的方法中,我有一個enum,它在我的startElement/endElement處理程序的switch語句中使用了很多狀態。國家數量正在增長,變得難以管理。有沒有更好的方法來處理libxml中的這個問題?例如,我注意到一些Java庫允許您創建多個解析器實例,因此當您輸入某個元素時,您可以委派給該特定元素的另一個解析器。

+1

對於大文檔,SAX速度要快得多......直到您需要有關遍歷XML節點的大量信息才能開始構建整個DOM樹。 –

回答

2

當你說「高效」時,我想你是在談論機器效率?但是程序員的效率更重要,正如你發現的那樣,編寫SAX應用程序來處理複雜的XML需要很多複雜的代碼,這些代碼很難開發並且很難調試。

你還沒有說你的處理的輸出應該是什麼。默認情況下,我會從大多數程序員高效的語言(通常是XQuery或XSLT)開始編寫,如果無法以這種方式達到性能要求,則只能使用較低級別的語言。