2009-01-28 35 views
31

我已經嘗試了許多Perl XML解析器。我對Sablotron Parser很感興趣,但是在Windows系統上安裝是件很痛苦的事情。目前我已經開始使用XML::LibXMLXML::LibXSLT,這兩者似乎都能滿足我的需求。Perl的最佳XML解析器是什麼?

他們似乎也相當標準。有沒有比這更好的XML解析器?

+2

「最好的」XML解析器是滿足您需求的解析器​​。您沒有提到您需要的XML解析類型:線性(SAX),樹(DOM),迭代(拉解析器)等,因此提供建議將很困難。 – 2009-01-28 16:52:53

回答

24

我認爲你正在使用一個很不錯的。 XML::LibXML,Matt Sergeant和Christian Glahn與Daniel Velliard的libxml2的Perl接口是我所知道的更快的XML解析器之一。

+0

謝謝,剛纔澄清說我正在使用正確的工具 – Xetius 2009-01-28 11:31:41

+0

是的。你絕對不會使用任何奇怪的東西......它非常接近標準。 – mmcdole 2009-01-28 11:58:54

10

如果您需要速度,功耗或特性,XML :: LibXML是最好的選擇。如果你使用後易用,但是,XML::Simple是一個可行的選擇。

5

以我的經驗XML::Simple最適合快速和髒的XML解析。我們使用它來解析來自不符合XML標準的第三方的數據。 XML :: Simple會引發信息錯誤,讓您快速運行。

12

這真的取決於你的需求,正如人們所說的。爲了解析大小約爲100Mb的XML文件(來自TAIR的基因註釋,每個染色體1個文件),我使用了mirod的XML::Twig模塊,該模塊允許您設置回調來解析您感興趣的元素,將每個子文檔呈現爲XML: :簡單的樹。它將SAX解析器(將文件作爲流進行掃描)的好處與DOM解析器相結合(可以更輕鬆地處理有趣的內容)。

4

(實際上它不是一個答案,但評論 - 但是,我不能評論...)

XML ::簡單已略。
(我知道這幾年從幾年前,但今天這個出現了在谷歌...)

然而,它的網站(http://metacpan.org/pod/XML::Simple)現在說:這個模塊

的的

狀態不鼓勵在新代碼中使用此模塊。其他模塊可提供更直接和一致的接口。尤其強烈建議使用XML :: LibXML。

該模塊的主要問題是大量的選項以及這些選項交互的任意方式 - 通常會產生意想不到的結果。

歡迎使用修補程序和文檔修補程序的修補程序,但不太可能添加新功能。

0

我會提供一個不應該使用XML::Parser

它自動將HTML實體擴展爲它們的UTF-8等價物,並且禁用此行爲的選項對所有實體的最具特徵的&不起作用。

此外,其XMLDecl-解析器將解釋和顯示在<?xml ... ?>塊的standalone屬性作爲"standalone"="1",這是絕對不正確 - 它應該是"standalone"="yes"

相關問題