dom4j学习笔记
xml是指可拓展标记语言,是一种标记语言,用于存储数据、传输数据,所有的属性和值以键值对的形式存在的,并且需要以标签的格式进行匹配。
XML的解析方式分为四种:1、DOM解析;2、SAX解析;3、JDOM解析;4、DOM4J解析。其中前两种属于基础方法,是官方提供的平台无关的解析方式;后两种属于扩展方法,它们是在基础的方法上扩展出来的,只适用于java平台。
DOM4J解析使用了接口和抽象基本类方法,具有性能优异、灵活性好、功能强大和极端易用的特点。这里将演示DOM4J对xml文件的解析。
DOM4J 使用了大量的接口,它的主要接口都在org.dom4j里面定义。本次练习用到的接口有:
Attribute:定义了 XML 的属性
Element:定义XML 元素
Document:定义了XML 文档
一个简易的xml文件用于测试
<beans id="beansID">
<bean id="item" class="cn.study.beans.Item">
</bean>
<bean id="item2" class="cn.study.beans.Item">
</bean>
</beans>
使用dom4j遍历读取xml文件元素属性:
public static void main(String[] args) throws Exception {
//创建一个用于解析xml文件的解析器:SAXReader
SAXReader reader = new SAXReader();
//解析xml文件,重新构建成一个Document对象,这个对象代表了整个XML文档。 这里使用.read()方法的参数是一个输入流
Document doc = reader.read(new FileInputStream("src/item.xml"));
//通过Document对象获取xml文件的根节点,根据根节点可以获取根节点下的子节点
//根节点类型为dom4j里的Element,调用getRootElement()方法获取xml文件的根节点
Element element = doc.getRootElement();
//获取根节点下所有的子节点,用一个List集合接收
List<Element> elementList = element.elements();
//循环遍历输出所有元素(节点)的所有属性
for(Element e : elementList) {
//attributes(),获取该元素的所有属性,以一个list返回。
List<Attribute> attrList = e.attributes();
//遍历输出获取到的元素的各个属性
for(Attribute attr : attrList) {
//节点的每个属性都是由键值对形式组成,因此要分别获取键和值
String key = attr.getName();//getName()获取属性名称
String val = attr.getValue();//getValue()获取属性的值
System.out.println("key:"+key+",val:"+val);
}
}
/*程序运行结果
key:id,val:item
key:class,val:cn.study.beans.Item
key:id,val:item2
key:class,val:cn.study.beans.Item
*/