Java 解析 XML 为实体类

在Java编程中,XML(可扩展标记语言)是一种广泛使用的数据格式,尤其在与Web服务、配置文件和数据交换中常常可以见到。本文将介绍如何用Java解析XML,并将其转换为 Java 实体类。我们将使用 JAXB(Java Architecture for XML Binding),这是一个便捷且功能强大的工具。

什么是 JAXB?

JAXB(Java Architecture for XML Binding)是一个用于将Java类与XML数据互相转换的API。通过JAXB,可以轻松地将XML文档解析为Java对象,或者将Java对象导出为XML文档。

解析 XML

为了演示如何将XML数据解析成Java实体类,我们先创建一个简单的XML文件和一个对应的Java类。假设我们有如下的XML文件 person.xml

<person>
    <name>张三</name>
    <age>25</age>
</person>

接下来,我们将创建一个对应的Java类 Person

import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement(name = "person")
public class Person {
    private String name;
    private int age;

    @XmlElement
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @XmlElement
    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

在上面的代码中,@XmlRootElement@XmlElement 注解分别表示该类是一个XML根元素和类内的字段对应的XML元素。

使用 JAXB 解析 XML

接下来,我们将使用JAXB解析person.xml文件,并将内容转换为Person对象。代码如下:

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;
import java.io.File;

public class XmlParser {
    public static void main(String[] args) {
        try {
            File file = new File("person.xml");
            JAXBContext jaxbContext = JAXBContext.newInstance(Person.class);

            Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
            Person person = (Person) jaxbUnmarshaller.unmarshal(file);
            System.out.println("Name: " + person.getName());
            System.out.println("Age: " + person.getAge());
        } catch (JAXBException e) {
            e.printStackTrace();
        }
    }
}

在上述代码中:

  1. 使用 JAXBContext 加载 Person 类。
  2. 创建一个 Unmarshaller 用于解析XML文件。
  3. 将解析后的对象转换为 Person 实例,并输出其属性 nameage

总结

通过使用JAXB,Java开发者可以很方便地将XML文件解析为Java对象,增强了与XML数据交互的能力。本文介绍的实例展示了从创建XML文件、定义实体类到使用JAXB进行解析的完整流程。

XML数据的解析在很多应用场景中都非常重要,如配置管理、数据传输等,通过合理使用JAXB,可以使开发过程更加高效和简洁。希望本文能够帮助你更好地理解Java中如何解析XML文件,并将其转化为可用的对象。