使用DOM4J解析XML的大致步骤
1:创建SAXReader
2:使用SAXReader读取XML文档并生成Document对象
Document对象内部就保存了XML文档描述的整棵树结构
3:通过Document对象获取根元素
4:从根元素开始逐级获取子元素已达到遍历XML文档的目的
Element的每一个实例用于表示XML文档中的一个元素(一对标签)
常用的方法:
String getName() 获取标签名
String getText() 获取标签中间的文本数据
Element element(String name) 获取指定名字的子标签
List elements() 获取所有子标签,集合中为若干Element实例
List elements(String name) 获取所有同名子标签(指定的名字)
标签上的属性:attributeValue(String str)<===>attribute(String str).getValue(String value);
String elementText(String name) 获取指定名字的子标签的中间的文本
例如:
e.elementText(“abc”);
等同于
e.element(“abc”).getText();
package xml;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import java.util.List;
/**
* 解析xml文档
*
* 解析XML有两种常见的方式
* 1:SAX解析:Simple API for Xml
* 逐行扫描解析,速度块,内存消耗小,但是不能对XML文档进行修改。
*
* 2:DOM解析:Document Object Model
* DOM是w3c推荐的解析方式,称为文档对象模型
* DOM解析其内部会将XML文档先读取完毕后内建整个树状模型,然后让我们解析
* 时通过遍历树状结构来达到解析目的。
*
*
* dom4j(dom for java)是java中常见的以DOM形式解析XML文档的API。
*/
public class ParseXmlDemo {
public static void main(String[] args) {
/*
使用DOM4J解析XML的大致步骤
1:创建SAXReader
2:使用SAXReader读取XML文档并生成Document对象
Document对象内部就保存了XML文档描述的整棵树结构
3:通过Document获取根元素
4:从根元素开始逐级获取子元素已达到遍历XML文档的目的
*/
try{
//1:创建SAXReader
SAXReader reader = new SAXReader();
//2:读取XML文档并生成Document
Document doc = reader.read("./emplist.xml");
/*
3:通过Document获取根元素(XML的根标签)
Element的每一个实例用于表示XML文档中的一个元素(一对标签)
常用的方法:
String getName() 获取标签名
String getText() 获取标签中间的文本数据
Element element(String name) 获取指定名字的子标签
List elements() 获取所有子标签,集合中为若干Element实例
List elements(String name) 获取所有同名子标签(指定的名字)
String elementText(String name) 获取指定名字的子标签的中间的文本
例如:
e.elementText("abc");
等同于
e.element("abc").getText();
*/
Element root = doc.getRootElement();
System.out.println(root.getName());//list
//获取每个员工信息(通过根标签获取所有<emp>子标签)
List<Element> list = root.elements("emp");//获取根标签"emp"下的所有子标签
System.out.println(list.size());
//遍历子标签
for(Element empEle:list){
//获取员工名字
// Element nameEle = empEle.element("name");//获取emp中的子标签<name>
// String name = nameEle.getText();//获取name标签中的文本信息
String name = empEle.elementText("name");
//获取员工年龄
// Element ageEle = empEle.element("age");
// int age = Integer.parseInt(ageEle.getText());
int age = Integer.parseInt(empEle.elementText("age"));
//获取员工性别
// Element genderEle = empEle.element("gender");
// String gender = genderEle.getText();
String gender = empEle.elementText("gender");
//获取员工工资
// Element salaryEle = empEle.element("salary");
// int salary = Integer.parseInt(salaryEle.getText());
int salary = Integer.parseInt(empEle.elementText("salary"));
// 获取员工工号
// Attribute attr = empEle.attribute("id");
// int id = Integer.parseInt(attr.getValue());
// int id = Integer.parseInt(empEle.attribute("id").getValue());
int id = Integer.parseInt(empEle.attributeValue("id"));
System.out.println("name:"+name+","+"工号:"+id+","+"年龄:"+age+","+"sex:"+gender+","+"薪资:"+salary);
}
}catch (Exception e){
e.printStackTrace();
}
}
}
输出结果: