-
XML解析方式 SAX: 速度快,但是不能修改元素内容 DOM:速度慢,但是可以修改元素内容 -
DOM4J解析 这个固定格式称为坐标,编写坐标后 maven会自动到远程中央仓库下载指定的jar包
<dependencies>
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
<type>pom</type>
</dependency>
</dependencies>
- 解析XML分为四步
- 创建一个SAXReader
- 使用SAXReader读取XML获得多个Document对象
注意:这个步骤比较耗时,将XML文件全部解析完成才能获得document对象 - 根据Document对象获得根元素
- 根据根元素获得所有XML元素
<list>
<emp id="1">
<name>张三</name>
<age>18</age>
<gender>男</gender>
<salary>5000</salary>
</emp>
<emp id="2">
<name>李四</name>
<age>14</age>
<gender>男</gender>
<salary>4000</salary>
</emp>
<emp id="3">
<name>张五</name>
<age>22</age>
<gender>男</gender>
<salary>2000</salary>
</emp>
<emp id="4">
<name>垃圾</name>
<age>18</age>
<gender>男</gender>
<salart>3000</salart>
</emp>
<emp id="5">
<name>三张三</name>
<age>18</age>
<gender>男</gender>
<salary>1100</salary>
</emp>
</list>
List<Emp> emps = new ArrayList<>();
List<Element> els = root.elements("emp");
for(Element el : els){
Attribute att = el.attribute("id");
String id = att.getValue();
String id = el.attributeValue("id");
System.out.println(id);
Element nameEl = el.element(name);
String empName = nameEl.getText();
System.out.println(empName);
String empGender = el.elementText("gender");
System.out.println(empGender);
String stringAge = el.elemenText("age");
int empAge = Integer.parseInt(stringAge);
System.out.println(empAge * 100);
int empSalary = Integer.parseInt(el.elementText("salary"));
Emp emp = new Emp(id,empName,empGender,empAge,empSalary);
emps.add(emp);
}
- 相关api
获取根元素的方法:Element getRootElement(); 每个Element又包含一些方法: String getName(); 返回标签的名字 String getText(); 返回标签中包含的文本 Element element(String name) 获得当前标签中指定的子标签 List element() 返回当前标签中的所有子标签 List element(String name)返回当前指定名字的所有子标签
|