Java xml内容转对象
时间: 2023-07-26 13:26:13 浏览: 56
在Java中,可以使用DOM、SAX或StAX等库将XML文档解析为Java对象。这里我们介绍一下使用DOM方式将XML内容转换为Java对象。
假设我们有一个XML内容如下:
```xml
<person>
<name>John Doe</name>
<age>30</age>
<address>
<street>123 Main St</street>
<city>Anytown</city>
<state>CA</state>
<zip>12345</zip>
</address>
</person>
```
我们可以使用DOM解析器将其解析为以下Java对象:
```java
public class Person {
private String name;
private int age;
private Address address;
// getters and setters
}
public class Address {
private String street;
private String city;
private String state;
private String zip;
// getters and setters
}
```
我们需要创建一个Document对象,然后使用它获取XML元素并将其映射到Java对象。以下是完整的示例代码:
```java
import org.w3c.dom.*;
import javax.xml.parsers.*;
import java.io.*;
public class XmlToObject {
public static void main(String[] args) throws Exception {
String xmlContent = "<person><name>John Doe</name><age>30</age><address><street>123 Main St</street><city>Anytown</city><state>CA</state><zip>12345</zip></address></person>";
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(new ByteArrayInputStream(xmlContent.getBytes()));
Element root = document.getDocumentElement();
Person person = new Person();
person.setName(getTagValue("name", root));
person.setAge(Integer.parseInt(getTagValue("age", root)));
Address address = new Address();
address.setStreet(getTagValue("street", root));
address.setCity(getTagValue("city", root));
address.setState(getTagValue("state", root));
address.setZip(getTagValue("zip", root));
person.setAddress(address);
System.out.println(person.getName());
System.out.println(person.getAge());
System.out.println(person.getAddress().getStreet());
System.out.println(person.getAddress().getCity());
System.out.println(person.getAddress().getState());
System.out.println(person.getAddress().getZip());
}
private static String getTagValue(String tag, Element element) {
NodeList nodeList = element.getElementsByTagName(tag).item(0).getChildNodes();
Node node = nodeList.item(0);
return node.getNodeValue();
}
}
```
运行该程序将输出以下内容:
```
John Doe
30
123 Main St
Anytown
CA
12345
```
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)