使用JAXB将XML文件解析为流

时间:2015-04-24 11:15:31

标签: java xml jaxb

我有一个XML文件,其中包含许多员工记录(例如最多1M),如下所示:

<employee>
 <name>peter</name>
 <mobile>435432</mobile>
<employee>
<employee>
 <name>Mary</name>
 <mobile>324213</mobile>
<employee>
<employee>
 <name>May</name>
 <mobile>54342423</mobile>
<employee>

我使用JAXB将员工记录映射到以下Java对象:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "employee")
public class Employee {
    @XmlElement(name = "name")
    private String name;

    @XmlElement(name = "mobile")
    private String mobile;
}

XML的内容无法更改并且提供此XML,如何使用JAXB将每个员工XML记录解组为Employee对象,以便我可以逐个处理它?<​​/ p>

1 个答案:

答案 0 :(得分:2)

您可以使用StAX XMLStreamReader解析XML,然后导航到第一个emoloyee元素并在该状态下解组XMLStreamReader,然后将其放在下一个emoloyee元素和重复。

更新

  

我的XML没有根元素

您应该可以针对您的用例使用SequenceInputStream。您将在InputStream

的3个实例中创建
  1. 一个代表你组成的开始元素
  2. 第二个代表您问题中显示的内容
  3. 最后一个表示您在第一个InputStream中打开的元素的close元素。
  4. 然后将SequenceInputStream的实例传递给我在原始答案中提到的XMLStreamReader,你应该很好。