2017-06-06 139 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 –