不使用第三方工具包将xml字符串转化为java对象
时间: 2023-12-23 07:02:46 浏览: 68
可以使用Java自带的XML解析器和反射机制来将XML字符串转化为Java对象。下面是一个例子:
假设我们有以下的XML字符串:
```xml
<Person>
<Name>John Doe</Name>
<Age>30</Age>
</Person>
```
我们想要将它转化为一个Person对象,Person类的定义如下:
```java
public class Person {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
```
可以使用Java自带的XML解析器和反射机制来实现转化:
```java
import java.io.StringReader;
import java.lang.reflect.Field;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.xml.sax.InputSource;
public class XmlToObject {
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();
// 解析XML字符串
InputSource is = new InputSource(new StringReader(xml));
Document doc = builder.parse(is);
// 获取根节点
Element root = doc.getDocumentElement();
// 创建Person对象
Person person = new Person();
// 遍历所有子节点,并通过反射设置属性值
for (int i = 0; i < root.getChildNodes().getLength(); i++) {
Node node = root.getChildNodes().item(i);
if (node.getNodeType() == Node.ELEMENT_NODE) {
String name = node.getNodeName();
String value = node.getTextContent();
Field field = Person.class.getDeclaredField(name.toLowerCase());
field.setAccessible(true);
if (field.getType() == int.class) {
field.set(person, Integer.parseInt(value));
} else {
field.set(person, value);
}
}
}
// 输出Person对象的属性值
System.out.println(person.getName());
System.out.println(person.getAge());
}
}
```
运行结果:
```
John Doe
30
```
这个例子只是一个简单的示例,实际应用中可能需要更复杂的XML结构和Java对象。但是基本思路是一样的:通过XML解析器解析XML字符串,然后通过反射机制设置Java对象的属性值。
阅读全文