Unmarshaller unmarshaller = context.createUnmarshaller() unmarshaller.unmarshal(sr) xml 转对象 多层级 包含数组
时间: 2024-05-19 20:10:38 浏览: 123
您可以使用 JAXB(Java Architecture for XML Binding)库将 XML 数据转换为对象。以下是一个示例代码,演示了如何使用 JAXB 将 XML 转换为多层级对象,并包含数组。
首先,您需要创建一个包含您要映射的对象的 Java 类。假设您有一个以下 XML 结构:
```xml
<root>
<name>John Doe</name>
<age>30</age>
<contacts>
<contact>
<type>Email</type>
<value>john@example.com</value>
</contact>
<contact>
<type>Phone</type>
<value>1234567890</value>
</contact>
</contacts>
</root>
```
您可以创建以下 Java 类来表示该 XML 结构:
```java
import javax.xml.bind.annotation.*;
import java.util.List;
@XmlRootElement(name = "root")
@XmlAccessorType(XmlAccessType.FIELD)
public class Root {
private String name;
private int age;
@XmlElementWrapper(name = "contacts")
@XmlElement(name = "contact")
private List<Contact> contacts;
// Getters and setters
}
@XmlAccessorType(XmlAccessType.FIELD)
public class Contact {
private String type;
private String value;
// Getters and setters
}
```
接下来,您可以使用以下代码将 XML 转换为对象:
```java
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;
import java.io.File;
public class Main {
public static void main(String[] args) {
try {
File xmlFile = new File("path/to/xml/file.xml");
JAXBContext jaxbContext = JAXBContext.newInstance(Root.class);
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
Root root = (Root) unmarshaller.unmarshal(xmlFile);
System.out.println("Name: " + root.getName());
System.out.println("Age: " + root.getAge());
System.out.println("Contacts:");
for (Contact contact : root.getContacts()) {
System.out.println("\tType: " + contact.getType());
System.out.println("\tValue: " + contact.getValue());
}
} catch (JAXBException e) {
e.printStackTrace();
}
}
}
```
请确保将 "path/to/xml/file.xml" 替换为您实际的 XML 文件路径。
这样,您就可以将包含数组的多层级 XML 转换为 Java 对象了。
阅读全文