Dom4j使用XPath获取节点和属性

Dom4j 中集成了对 XPath 的支持。在选择节点时,可以直接使用 XPath 表达式。 这种方式更加方便,简洁,官方文档中推荐使用该种方式。

Dom4j 中集成了对 XPath 的支持。在选择节点时,可以直接使用 XPath 表达式。 这种方式更加方便,简洁,官方文档中推荐使用该种方式。

在使用XPath表达式之前你需要引入jaxen-1.1-beta-6.jar文件,该jar是一个XPath解析引擎。你可以在你下载的dom4j的lib目录下面找到该jar包。我的dom4j版本是dom4j-1.6.1。

我们要解析的XML文件如下:

<?xml version="1.0" encoding="GB2312"?>
<books>
	<!-- java圣经 -->
	<book isbn="9787111213826">
		<name>《Java编程思想(第4版)》</name>
		<desc>
			<![CDATA[Java 《Java编程思想(第4版)》书共22章,包括操作符、控制执行流程、访问权限控制]]>
		</desc>
	</book>

	<!-- Core Java Volume I-Fundamentals(Ninth Edition) 分为上下两卷 -->
	<book isbn="9787111445142">
		<name>Java核心技术</name>
		<desc>
			<![CDATA[Java领域最有影响力和价值的著作之一,与《Java编程思想》齐名,10余年全球畅销不衰,广受好评;]]>
		</desc>
	</book>
</books>

具体的java源码如下:

package com.bug315.parse;

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

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

/**
 * 使用XPath的方式解析
 * 
 * 注意:
 *   使用XPath方式解析XML文档,你需要引入jaxen-1.1-beta-6.jar,这是一个XPath引擎
 * 
 * @author administrator
 * @date 2015年12月17日21:21:53
 */
public class ParseForXPathTest01 {
	
	public static void main(String[] args) throws Exception {
		// 创建Document对象
		SAXReader saxReader = new SAXReader();
		saxReader.setEncoding("UTF-8");
		Document document = saxReader.read(new File("document/books.xml"));
		
		// 使用XPath获取所有的book元素
		List list = document.selectNodes("//books//book");
		for (Object obj : list) {
			Element element = (Element)obj;
			System.out.println("元素名称:" + element.getName() );
			
			System.out.println("所有属性:");
			List attrList = element.attributes();
			for ( Object attr : attrList){
				Attribute attrObj = (Attribute)attr;
				System.out.println(attrObj.getName() + " = " + attrObj.getText() );
			}
			System.out.println();
		}
		
		// 使用XPath获取所有book元素的isbn属性
		List attributeList = document.selectNodes("//books//book//@isbn");
		for ( Object obj : attributeList ) {
			Attribute attr = (Attribute)obj;
			System.out.println( attr.getName() + "=" + attr.getText() );
		}
	}
	
}

输出结果:

元素名称:book

所有属性:

isbn = 9787111213826

元素名称:book

所有属性:

isbn = 9787111445142

isbn=9787111213826

isbn=9787111445142

一个不注意小事情的人,永远不会成功大事业。——戴尔·卡耐基
0 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号