import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.List;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
/*
* 使用DOM解析xml文档
*/
public class parsexmldemon {
public static void main(String[] args) {
/*
* 解析test.xml文档,将所有的员工的信息
* 读取出来并转换为若干emp实例,
* 存到一个List集合中。
*
* 解析XML的流程:
* 1:创建SAXReader
* 2:实验SAXReader读取XML文档并返回
* Document对象
* 这一步就是DOM解析耗时耗资源的体现
* 因为DOM会将文档全部读取并
* 以一个Document对象形式存于内存。
* Document对象用于描述解析的XML文档内容。
* 3:根据Document对象获取根元素
* 4:按照xml的结构从根元素开始逐级
* 获取子元素以达到遍历xml的目的
*
*/
try {
//1
SAXReader reader=new SAXReader();
//2
Document doc=reader.read(
new FileInputStream("test.xml")
);
/*
* 3获取根元素
* Element的每一个实例用于表示xml
* 中的一个元素(一对标签)
* 在获取的相当于是test.xml文档
* 中的<list>标签
*/
List<emp> emplist=new ArrayList<emp>();
Element root=doc.getRootElement();
/*
* Element获取元素的相关方法:
*
* String getName()//获取当前标签的名字
*
* List elements()//获取当前标签下所有同名子标签
*
* Element element(String name)//获取指定名字的子标签
*
* Attribute attribute(String name)//获取指定名字的属性
*
*/
List<Element> elements=root.elements();
for (Element ele : elements) {
Element nameEle=ele.element("name");
String name
=nameEle.getTextTrim();
int age=Integer.parseInt(
ele.elementText("age")
);
String gender=ele.elementTextTrim("gender");
int salary=Integer.parseInt(
ele.elementTextTrim("salary")
);
/*
* String getName()获取当前属性名
* String getValue()获取当前属性值
*/
Attribute attr=ele.attribute("id");
int id=Integer.parseInt(
attr.getValue()
);
emp emp=new emp(
id, name, age, gender, salary
);
emplist.add(emp);
}
for (emp e : emplist) {
System.out.println(e.getId());
System.out.println(e.getName());
System.out.println(e.getAge());
System.out.println(e.getGender());
System.out.println(e.getSalary());
}
} catch (Exception e) {
// TODO: handle exception
}
}
}
[dom4j]解析xml
最新推荐文章于 2021-07-30 11:53:53 发布