Java 基础教程

Java 面向对象

Java 高级教程

Java 笔记

Java FAQ

java xml转换为对象


在 Java 中,将 XML 转换为对象通常涉及两种主要的实现方式:使用 JAXB(Java Architecture for XML Binding)和使用 DOM 解析。下面我将为您详细介绍这两种方式的步骤流程,并附上相应的示例代码。

使用 JAXB

JAXB 是 Java 提供的一种将 Java 对象与 XML 文档相互转换的技术。它通过注解将 Java 类映射到 XML 元素,从而实现自动的 XML 与 Java 对象之间的转换。

步骤流程:

  1. 创建 Java 类,使用 JAXB 注解来标识类的字段与 XML 元素的映射关系。
  2. 使用 JAXB 的上下文创建 Unmarshaller 对象,将 XML 解析为 Java 对象。

示例代码:

假设我们有以下 XML 表示一个简单的 Person 对象:

<person>
    <name>John Doe</name>
    <age>30</age>
</person>

对应的 Java 类如下:

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

@XmlRootElement
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;
    }
}

解析 XML 到 Java 对象的代码如下:

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

public class XmlToObjectUsingJAXB {
    public static void main(String[] args) throws JAXBException {
        String xml = "<person><name>John Doe</name><age>30</age></person>";

        JAXBContext context = JAXBContext.newInstance(Person.class);
        Unmarshaller unmarshaller = context.createUnmarshaller();

        Person person = (Person) unmarshaller.unmarshal(new StringReader(xml));
        System.out.println("Name: " + person.getName());
        System.out.println("Age: " + person.getAge());
    }
}

使用 DOM 解析

DOM 解析是一种将 XML 文档转换为树形结构,然后通过操作树节点来提取数据的方式。

步骤流程:

  1. 创建一个 DocumentBuilderFactory 实例,用于创建 DocumentBuilder。
  2. 使用 DocumentBuilder 解析 XML 文件,生成一个表示整个 XML 文档的 Document 对象。
  3. 通过 XPath 或遍历方式获取需要的节点,并提取数据创建 Java 对象。

示例代码:

假设我们有同样的 XML 表示一个简单的 Person 对象。

解析 XML 到 Java 对象的代码如下:

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.io.ByteArrayInputStream;

public class XmlToObjectUsingDOM {
    public static void main(String[] args) throws Exception {
        String xml = "<person><name>John Doe</name><age>30</age></person>";

        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = factory.newDocumentBuilder();

        Document document = builder.parse(new ByteArrayInputStream(xml.getBytes()));

        Element root = document.getDocumentElement();
        String name = root.getElementsByTagName("name").item(0).getTextContent();
        int age = Integer.parseInt(root.getElementsByTagName("age").item(0).getTextContent());

        Person person = new Person();
        person.setName(name);
        person.setAge(age);

        System.out.println("Name: " + person.getName());
        System.out.println("Age: " + person.getAge());
    }
}

以上就是使用 JAXB 和 DOM 解析两种方式将 XML 转换为 Java 对象的详细步骤流程和示例代码。您可以根据实际情况选择适合您需求的方式。

在Java中,将其他类型转换为String有多种方式,下面我会介绍一些常见的实现方式,并提供每种方式的步骤流程和示例代码。创建一个新的`St ...
在Java中,将JSON字符串转换为JSON对象可以使用多种不同的方式。示例代码:###方式二:使用Jackson库添加依赖(Maven和G ...
以下是一些常见的方法,包括详细的步骤流程、示例代码和对比总结:###方法一:使用join()方法`join()`方法是将列表中的元素连接成一 ...
下面我将介绍两种常用的方式:使用Java内置的库和使用第三方库(ApacheXMLGraphicsCommons)。将`Document`对 ...
在Java中解析XML有多种方式,以下是其中几种常见的实现方式,包括DOM解析、SAX解析、和StAX解析。示例代码:Maven依赖:Gra ...