Dom4J解析xml文件

(一)xml基础简介:

什么是xml?
-可扩展标记语言,根据自己的需求定义自己的标签。

xml文件的作用:
-主要用来传输和存储数据。

解析xml文件的方法:
-DOM、DOM4J、SAX
-DOM与DOM4J:基于树结构的解析(一次性读取到内存中需要什么解析什么)。注:DOM复杂繁琐,DOM4J对DOM进行了封装,建议使用DOM4J。
-SAX:基于事件流的解析(边读边解析,不回头),适用于大的xml文件。

 

xml文档练习(方便后面说明):

read_student.xml :

<?xml version="1.0" encoding="UTF-8"?>
<students>
	<student id="1">
		<name>王同</name>
		<course>java</course>
		<score>89</score>
	</student>
	<student id="2">
		<name>李佳</name>
		<course>sql</course>
		<score>58</score>
	</student>
</students>

 

(二)Dom4J解析

1)Dom4J常用对象:
SAXReader:读取xml文件到Document树结构文件对象。
Document:是一个xml文档对象树,类比Html文档对象。
Element:元素节点。通过Document对象可以查找单个元素。

2)Dom4J解析read_student.xml步骤:
第一步:创建解析器。
第二步:得到Document对象。
第三步:获取xml根节点。
第四步:遍历解析子节点。

解析read_student.xml文件

方法1:

package Test;

import java.io.File;
import java.util.Iterator;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class a_SAX {
	public static void main(String[] args) throws DocumentException{
		//创建解析器
		SAXReader reader =new SAXReader();
		//通过解析器的read方法将配置文件读到内存中,生成一个Document[org.dom4j]对象树
		Document document=reader.read(new File("conf/Student.xml"));
		//获取根节点
		Element root=document.getRootElement();
		//开始遍历根节点(迭代器)
		Iterator<Element> rootIter=root.elementIterator();
		while(rootIter.hasNext()){
			//获取root下的元素
			Element e=(Element)rootIter.next();
			System.out.println(e.getName());
			//获取id属性
			Attribute id=e.attribute("id");
			System.out.println(id.getName()+"="+id.getValue());
			//获取student的子元素
			Element name=e.element("name");
			Element course=e.element("course");
			Element score=e.element("score");
			System.out.println(name.getName()+"="+name.getText());
			System.out.println(course.getName()+"="+course.getText());
			System.out.println(score.getName()+"="+score.getText());
			System.out.println("--------------------------------------------");
		}
	}

}

方法2:

package Test;

import java.io.File;
import java.util.Iterator;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class b_SAX {
	public static void main(String[] args) throws DocumentException{
		//创建解析器
		SAXReader reader =new SAXReader();
		//通过解析器的read方法将配置文件读到内存中,生成一个Document[org.dom4j]对象树
		Document document=reader.read(new File("conf/Student.xml"));
		//获取根节点
		Element root=document.getRootElement();
		//开始遍历根节点(迭代器)
		Iterator<Element> rootIter=root.elementIterator();
		while(rootIter.hasNext()){
			//获取rot下的元素
			Element e=(Element)rootIter.next();
			System.out.print(e.getName()+"  ");
			//获取id属性
			Attribute id=e.attribute("id");	
			System.out.println(id.getName()+"="+id.getValue());
			//获取student的子元素
			Iterator<Element> node=e.elementIterator();
			while(node.hasNext()){
				Element innerElt=node.next();
				System.out.println(innerElt.getName()+"="+innerElt.getText());
			}
			System.out.println("--------------------------------------------");
		}
	}

}

结果:

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值