2017-05-08 46 views
0

哪一種是閱讀xml的有效方式。我知道的方法有兩種:

1)JAXB: 通過註釋我的班有JAXB註解,我們得到使用對象的編組&解組在java對象反之亦然XML。這是從XML獲取值的最佳方式:JAXB或DOM?

2)DOM: 使用dom解析器解析xml並使用xml中的xpath值可以被訪問。 DOM的

例子:

 File fXmlFile = new File("/Users/link1/input.xml"); 
     DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); 
     DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); 
     Document doc = dBuilder.parse(fXmlFile); 
     doc.getDocumentElement().normalize(); 

按照業務需求,我希望用最快的方式與上述兩者之間的更好的方法。建議和幾個策略將不勝感激。

+0

你需要使用JAXB或DOM,或者是SAX,StAX的和傑克遜XmlMapper也一個選項? – toongeorges

+0

你的谷歌foo會告訴你正確的答案。但是..如果你的xml很小(想象500 MB)就地(DOM)否則去流(SAX,StaX) – SomeDude

+0

@toongeorges作爲一個新用戶,我目前只期待着這兩個選項,需要選擇其中之一。 – Vaibs

回答

2

問題第一個問題:您的XML總是具有相同的結構,並且此結構是否可以映射到Java對象的層次結構上?

  1. 如果是 - >要麼使用JAXB或傑克遜XmlMapper

  2. 如果否(你的XML的結構而異) - >您是否需要與衆多的數據隨機存取你的XML閱讀和可能一些寫入(之後您將數據轉換回XML)?

    2.1。如果是 - >使用DOM(它專爲XML文檔樹的內存處理而設計,但具有更多開銷)

    2.2。如果否(更高效的XML解析) - >您需要解析XML中的所有信息還是需要XML驗證?

    • 2.2.1如果是 - >使用SAX(它包含在JDK,並允許驗證)

    • 2.2.2如果否 - >使用的StAX(它是一個XML拉解析器允許讀XML進行了一些值,而不必解析完整的XML,但它不提供驗證。)

相關問題