2009-06-17 37 views
1

我是新來的Java和我在一個Java項目,說跨越聲明是:在java中,commons-Digester如何處理輸入XML文件?

Digester digester = DigesterLoader.createDigester(getClass() 
       .getClassLoader().getResource("rules.xml")); 

rules.xml文件包含了各種圖案,每個圖案都有類似的類名,方法名和一些其他性質不同的屬性。

我在谷歌搜索上找到了一些有用的信息,可以幫助我解決上述問題。任何人都可以告訴我執行上述語句的步驟是什麼?實際上這個XML的優點是什麼?

+0

有點遲了答覆:apache消化不是一個完整的解析器,有時可能會非常緩慢。有一個名爲extended vtd-xml的新選項,可以處理高達256 GB的xml文檔,它支持完整的Xpath和mem映射 – 2009-11-27 03:08:42

回答

2

swapnil,在我的Struts日子裏,作爲Digester的用戶,我可以誠實地說,學習/調試是非常棘手的。熟悉自己是一個艱難的庫,本質上你是爲特定的元素設置事件處理程序,就像SAX解析器(事實上它在後臺使用SAX)。因此,您爲規則引擎提供了一些XPath用於您感興趣的節點,並設置將實例化的規則,並使用它在XML文件中找到的數據在某些POJO上設置屬性。

好主意,一旦你習慣了它,這很好,但是如果你有一個用於你的輸入xml文件的xsd,我會盡快推薦你使用JAXB。

Digester的一件好事是它只會處理您感興趣的元素,所以內存佔用最終會變得很好而且很低。

1

這是被稱爲here的方法。 Xml通常在Java中用於配置,因爲不需要編譯xml文件。在java文件中具有相同的配置意味着你必須編譯文件。

1

我假設您瞭解規則文件是如何使用類加載器加載的?它基本上和類本身在同一個包中,創建一個URL,它給出了文件的絕對位置。

至於Digester,我沒有用過它,但快速閱讀(http://commons.apache.org/digester/)應該解釋一切。

0

他們在我最後的演出中使用它,我記得的是它非常緩慢。