Dom4j 解析(重点)

2014年12月31日10:47:53 天气晴

DOM4J是一个非常优秀的Java XML API,具有性能优异、功能强大和极端易用的的特点,同时它也是一个开放源代码的软件。

它合并了许多超出基本XML文档的功能,包括集成了XPath支持、XML Schema 支持以及用于大文档或流化文档的基于事件的处理。

如今你可以看到越来越多的Java软件都在使用DOM4J来读写XML,特别值得一提的是连Sun 的JACM 也在用DOM4J.

一.Dom4j解析编程步骤:

a.SAXReader reader = new SAXReader();

b.Document doc = reader.read(new FileInputStream("xml/student.xml"));

c.调用相关的API对该文档对象进行操作

二.案例

如果已知student.xml的文档结构,解析比较简单。在未知student.xml文档结构的情况下,利用递归的方法来做遍历
student.xml
<?xml version="1.0" encoding="UTF-8"?>
<students>
	<student id="studentId">
		<name>LGP</name>
		<age>24</age>
	</student>
</students>

ReadXmlFileByDom4j.java
package com.gditc.test;

import java.io.File;
import java.util.List;

<span style="color:#cc0000;">import org.dom4j.Document;</span>
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.Test;

public class ReadXmlFileByDom4j {

	@SuppressWarnings("unchecked")
	@Test
	public void readXmlByDom4j() {
		try {
			SAXReader reader=new SAXReader();
		
			//获得xml文件对应的文档树对象
			Document doc = reader.read(new File("xml/student.xml"));
			System.out.println("xml文档编码"+doc.getXMLEncoding());
			
			Element root = doc.getRootElement();
			System.out.println("根标签名:"+root.getName());
			
//			List<Element> elements = root.elements();
//			方法一: 已知student.xml文档结构的情况下做的遍历
//			for (Element element: elements) {
//				List<Element> elements2 = element.elements();
//				for (Element element2: elements2) {
//					System.out.println(element2.getName()+":"+element2.getStringValue());
//				}
//			}
			
//			方法二:利用递归的原理来遍历元素
			List<Element> elements = root.elements();
			readChild(elements);
		} catch (DocumentException e) {
			e.printStackTrace();
		}
	}

	<strong>@SuppressWarnings("unchecked")
	public void readChild(List<Element> elements) {
		for (Element element : elements) 	{
			List<Element> childs = element.elements();
			for (Element element2 : childs) {
				System.out.println(element2.getName()+":"+element2.getText());
			}
			if (childs.size()>0) {
				readChild(childs);
			}
		}
	}</strong>
}


注意:Document对象是在org.dom4j包中,而不是org.w3c下。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值