XML解析 Dom4j.md

pom.xml :

1
2
3
4
5
6
<!-- https://mvnrepository.com/artifact/org.dom4j/dom4j -->
<dependency>
<groupId>org.dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>2.1.3</version>
</dependency>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
public class XmlParserUtils {
public static <T> List<T> parse(String file, Class<T> targetClass) {
ArrayList<T> list = new ArrayList<>(); // 封装解析出来的数据

try{
// 1. 获取一个对象解析器对象
SAXReader saxReader = new SAXReader();
// 2. 利用解析器把xml文件加载到内存中
Document document = saxReader.read(new File(file));
// 3. 获取根标签
Element rootElement = document.getRootElement();
// 4. 通过根标签来获取 user 标签
List<Element> elements = rootElement.elements("emp");

// 5. 便利集合,得到每一个user标签
for(Element element : elements) {
// 获取 name 属性
String name = element.element("name").getText();
// 获取 age 属性
String age = element.element("age").getText();
// 获取 image 属性
String image = element.element("image").getText();
// 获取 gender 属性
String gender = element.element("gender").getText();
// 获取 job 属性
String job = element.element("job").getText();

//组装数据
Constructor<T> constructor = targetClass.getDeclaredConstructor(String.class, Integer.class, String.class, String.class, String.class);
constructor.setAccessible(true);
T object = constructor.newInstance(name, Integer.parseInt(age), image, gender, job);

list.add(object);
}
} catch (DocumentException e) {
// throw new RuntimeException(e);
e.printStackTrace();
}

return list;
}
}