在 Java 中,将 XML 转换为对象通常涉及两种主要的实现方式:使用 JAXB(Java Architecture for XML Binding)和使用 DOM 解析。下面我将为您详细介绍这两种方式的步骤流程,并附上相应的示例代码。
JAXB 是 Java 提供的一种将 Java 对象与 XML 文档相互转换的技术。它通过注解将 Java 类映射到 XML 元素,从而实现自动的 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 解析是一种将 XML 文档转换为树形结构,然后通过操作树节点来提取数据的方式。
步骤流程:
示例代码:
假设我们有同样的 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 对象的详细步骤流程和示例代码。您可以根据实际情况选择适合您需求的方式。