2017-06-06 162 views
1

我想解析具有大量數據的xml文件,下面是我的xml。解析XML到Java列表

什麼是從XML解析到java List的最佳方式?我可以使用SAXParser來解析XML或其他有效的方式嗎?我預計,我會有超過100萬的數據。

<root> 
    <Company> 
     <name>TATA</name> 
     <Location> 
      <id>1</id> 
      <name>India</name> 
      <branchesList> 
       <branches> 
       <name>Chennai</name> 
       <id>Ch-1</id> 
       <status>Active</status> 
      </branches> 
      <branches> 
       <name>Hyderabad</name> 
       <id>Hy-1</id> 
      <status>In-Active</status> 
      </branches> 
      <branches> 
       <name>Delhi</name> 
       <id>De-1</id> 
       <status>Active</status> 
      </branches> 
     </branchesList> 
     </Location> 
     <Location> 
      <id>1</id> 
      <name>USA</name> 
      <branchesList> 
       <branches> 
       <name>NewYork</name> 
       <id>Nw-1</id> 
       <status>Active</status> 
      </branches> 
      <branches> 
       <name>NewJersy</name> 
       <id>Ne-1</id> 
      <status>In-Active</status> 
      </branches> 
      <branches> 
       <name>Denver</name> 
       <id>De-1</id> 
       <status>Active</status> 
      </branches> 
     </branchesList> 
     </Location> 
     </Company> 

    </root> 
+4

[在JAVA中解析大型XML文檔]可能重複(https://stackoverflow.com/questions/15132390/parsing-large-xml-documents-in-java) – geo

+0

爲什麼選擇java列表?你不妨建立一個dom樹並用xpath查詢... –

+0

這個SO帖子可能會幫助你找到一個更好的/高性能的解決方案https://stackoverflow.com/questions/8791600/can-sax-parsers-use-xpath- in-java –

回答

0

我會建議你在this answer.

看它建議使用的SAXParser的大個XML。

由於在java中有100萬以上的字符串,原則上沒有問題。你可以有多達Integer.MAX_VALUE-5 iirc。

SAXParser的文檔是here並且非常完整。你應該沒有問題把你想要的元素放在一個列表中。

最後,如果你想在內存中有一個簡單的字符串列表,我會看看其他集合,如Dictionary

+0

解析本身並不是真正的問題。用戶想要在內存中使用的列表是什麼,這聽起來並不那麼重要,但是在任何情況下,這都是擔心sax解析器使用內存的部分。 –

+0

是的你是對的,他的問題的「標題」部分提到將它列入清單。 –

+0

我試着回答他的問題的所有部分。感謝您的反饋@David Hofmann –