繁体   English   中英

如何在Java中将XML节点反序列化为pojo?

[英]How to deserialize XML node to pojo in Java?

说我有一个非常大的XML文件,其中包含成千上万个包含各种详细信息的节点,例如:

<Document>
    <Header>
    </Header>
    <Whatever>
        <Person>
            <Name>John Doe</Name>
            <Age>30</Age>
        </Person>
        <Person>
            <Name>Jane Doe</Name>
            <Age>30</Age>
        </Person>
        ...
    </Whatever>
</Document>

我想流该xml文件,并且每次它到达Person节点时,它都应该给我一个Person pojo。 使用StAX,我可以通过手动创建pojo来做到这一点,但是我敢打赌那里有可以为我做到这一点的库。

您可以编写一个Java程序,该程序会扫描XML文件,并且每次遇到字符串<Person>时,都会开始保存后续的字符串,直到到达</Person>为止。

提取<Person>....</Person>类的字符串后,请使用Jackson之类的库将其转换为Java对象。

定义一个类似的类:

@XmlRootElement
public class Person {

    @XmlElement(name = "Name")
    String name;

    @XmlElement(name = "Age")
    int age;
}

@XmlRootElement
public class Header {    
}

@XmlRootElement
public class Document {

    @XmlElement(name = "Header")
    Header header;

    @XmlElementWrapper(name = "Whatever")
    @XmlElement(name = "person")
    List<Person> people;
}

使用JAXB将XML解组到对象后。

JAXBContext jaxbContext = JAXBContext.newInstance(Document.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
Document document = (Document) jaxbUnmarshaller.unmarshal(file);

List<Person> people = document.getPeople();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM