2010-05-06 24 views
1

解析器(java)會推薦用於解析GPX數據嗎?我尋找一個非常直觀的使用,並不需要太多的RAM(似乎DOM需要太多,不是嗎?)。我不知道如何解析xml,所以現在是我學習這個的時候了;-)推薦用於java中的XML解析器(絕對初學者到xml)

我的文檔不是很大,並且總是被讀取兩次(DOM的一個點),但我想保留很少的東西儘可能在RAM中。

你會在這種情況下做什麼?你會選擇哪一個,爲什麼?

+0

在內存中加載的一切是沒有必要的一樣消耗大量的內存,你可能想看看VTD-XML,SAX,STAX等 – 2010-05-06 17:32:33

回答

3

除非您有特殊原因使用第三方庫進行XML解析,否則我只使用標準Java API。請參閱包裝javax.xml.parsers。假設你有一個文件的XML,你可以解析它變成一個org.w3c.dom.Document(Java的標準API也部分)是這樣的:

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
DocumentBuilder db = dbf.newDocumentBuilder(); 
Document doc = db.parse(new File(filename)); 

因爲你的文件都沒有那麼大,使用DOM將是最簡單,最明顯的選擇。

您可以使用Document對象和相關對象(請參閱org.w3c.dom包中的類)的方法來獲取數據或使用XPath(請參閱包javax.xml.xpath)。

Quotidian提到的JAXB自Java 6以來也是標準API,但是使用標準DOM API可能需要更多的設置工作。

+0

謝謝,我會試試這:) – poeschlorn 2010-05-07 06:56:38

0

根據你想用XML做什麼,JAXB可能是一種可能性。這個想法是將xml轉換爲POJO,而不用解析器(直接)搞亂。 (儘管如果需要的話,仍然可能會弄亂解析器。)另外,我發現由於JAXB在javax根包中,它通常會在標準方面更好地發揮作用。

+0

如果使用的程序,因爲它應該使用的XML文件將最多編輯一次(如果接收到的數據無效)發生。在使用程序的過程中,它被讀取2或3次... – poeschlorn 2010-05-06 14:26:10

+0

如果有數據無效的機會,我肯定會使用JAXB。有一個相當強大的驗證/適配器框架,它在編組/解組步驟中實施。 – Quotidian 2010-05-06 14:51:01

0

XOM是非常容易使用,如果你想使用像DOM,JDOM或DOM4J的東西我認爲你應該檢查出XOM。它是由一個JDOM開發人員創建的,他試圖讓api更加用戶友好。由於它的構建是平易近人的,並具有良好的在線文檔,因此我建議將它作爲初學者的良好起點。

0

我阿帕奇沼氣池的大風扇,因爲它可以讓你定義轉換規則而直接進入Java對象。我認爲JaxB做了類似的事情。