dom4j解析XML

2 篇文章 0 订阅

DOM4J

优点:简单,易用,逻辑条理清晰,使用范围较广

缺点:dom4j的解析前都将文件加载到内存中,所以读的快写得慢,如果XML文件过大,不推荐使用dom4j的

 

(一)通过递归获取所有节点元素

XML文件如下

<?xml version="1.0" encoding="UTF-8"?>
<Users class="1">
	<user>
		<id>1</id>
		<name>Tom</name>
		<age>21</age>
	</user>
	<user>
		<id>2</id>
		<name>Jerry</name>
		<age>23</age>
	</user>
	<user>
		<id>3</id>
		<name>Chana</name>
		<age>18</age>
	</user>
</Users>

dom4j的代码如下

package java1805springdemo;


import java.io.File;
import java.util.List;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
 
/**
 * 
* <p>Title: Dom4j.java</p>  
* <p>Description:
*                       </p>  
* <p>Copyright: XJ-Fate (c) 2018</p>  
* @author XJ  
* @date 2018年8月30日  
* @version 1.0
 */
public class Dom4j {
	public static void parserNode(Element ele){
		
		System.out.println(ele.getName()+":"+ele.getText().trim());
		
		@SuppressWarnings("unchecked")
		List<Attribute> attrList = ele.attributes();
		for(Attribute attr : attrList){
			//每循环一次,获取当前节点的属性及值
			String name = attr.getName();
			String value = attr.getValue();
			System.out.println(name+"="+value);
		}
		
		@SuppressWarnings("unchecked")
		List<Element> eleList = ele.elements();
		//递归遍历父节点下的所有子节点
		for(Element e : eleList){
			parserNode(e);
		}
	}
	
	public static void main(String[] args) {
		SAXReader saxReader = new SAXReader();
		try {
			//取得XML文档对象
			Document document = saxReader.read(new File("./src/test/java/ElementNode.xml"));
			//取得根标签
			Element ele = document.getRootElement();
			parserNode(ele);
		} catch (DocumentException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

运行结果如下

Users:
class=1
user:
id:1
name:Tom
age:21
user:
id:2
name:Jerry
age:23
user:
id:3
name:Chana
age:18

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值