xml常用的解析——Dom4J解析

xml常用的解析器Dom4J:
XML解析:
* 解析xml可以做:
* 如果xml作为配置文件:读取
* 如果xml作为传输文件:写,读
* xml解析思想:
* DOM:将文档加载进内存,形成一颗dom树(document对象),将文档的各个组成部分封装为一些对象。
* 优点:因为,在内存中会形成dom树,可以对dom树进行增删改查。

* 缺点:dom树非常占内存,解析速度慢。


Document,Element,Text,Attribute,Comment
* SAX:逐行读取,基于事件驱动
* 优点:不占内存,速度快

* 缺点:只能读取,不能回写


由于DOM 和 SAX 解析各有各的缺点在现在的开发中基本不用,基本现在解析XML文件都是用DOM4J

* DOM4J:dom for java民间方式,但是是事实方式。非常好。  支持dom
1.导入jar包 dom4j.jar
2.创建解析器
SAXReader reader = new SAXReader();
3.解析xml 获得document对象 

Document document = reader.read(url); 


.......... 下面进入代码演示

解析指定标签的下的xml中间的指定节点进行解析


public void test01() throws DocumentException {
		// 文档中的固定的写法

		// 创建一个xml文件解析对象
		SAXReader reader = new SAXReader();
		// 把xml文档加载到内存当中
		Document document = reader.read("src/Book.xml");
		Element root = document.getRootElement();
		/*
		 * 得到节点名为书的这个节点
		 * Element bookNode= root.element("书");
		 *  System.out.println(bookNode);
		 */

		//得到当前所有的子接点
		List list = root.elements();
		//用get()方法得到第二本书的对象
		Element se = (Element) list.get(1);
		//得到第二个节点下的内容
		String name = se.element("书名").getText();
		System.out.println(name);
	}
	


遍历xml文件中的所有节点洗的内容是通过,递归的方法来实现的


遍历解析所有的节点


@Test  //2,遍历所有节点
	public void test02() throws DocumentException{
		//创建解析xml解析对象
		SAXReader reader = new SAXReader();
		//将xml文档加载到docunmer中
		Document document = reader.read("src/Book.xml");
		Element root = document.getRootElement();
		treeAll(root);
	}

	private void treeAll(Element root) {
		// TODO Auto-generated method stub
		System.out.println(root.getName());
		for (int i = 0; i < root.nodeCount(); i++) {
			Node node = root.node(1);
			if (node instanceof Element) {
				treeAll((Element)node);
			}
		}
	}


遍历xml文件中的所有节点的内容是通过递归的方法来实现的

 
  
 
  
 
 

你可能感兴趣的:(xml常用的解析——Dom4J解析)