XML系列:(8)XML解析-Dom4j的xPath技术

1、xPath技术

问题:当使用dom4j查询比较深的层次结构的节点(标签,属性,文本),比较麻烦!!!

xPath作用:主要是用于快速获取所需的节点对象。

1.1、在dom4j中如何使用xPath技术

1)导入xPath支持jar包 。  jaxen-1.1-beta-6.jar(这个jar包在dom4j的压缩包中,位置:dom4j-1.6.1\lib\jaxen-1.1-beta-6.jar)

2)使用xpath方法

List selectNodes("xpath表达式");   查询多个节点对象

Node selectSingleNode("xpath表达式");  查询一个节点对象

1.2、xPath语法

xPath语法
符号 含义
/ 绝对路径 表示从xml的根位置开始或子元素(一个层次结构)
// 相对路径 表示不分任何层次结构的选择元素。
* 通配符 表示匹配所有元素
[] 条件 表示选择什么条件下的元素
@ 属性 表示选择属性节点
and 关系 表示条件的与关系(等价于&&)
text() 文本 表示选择文本内容
     

2、xPath代码示例

2.1、第一个示例

package com.rk.xml.i_xpath;

import org.dom4j.Document;
import org.dom4j.Node;

import com.rk.utils.Dom4jUtil;

/**
 * 第一个示例
 * @author RK
 *
 */
public class Demo01
{
	public static void main(String[] args)
	{
		/**
		 * 需求: 删除id值为“c002”的Cat标签
		 */
		Document doc = Dom4jUtil.openDocument("./src/animals.xml");
		//1.查询id值为“c002”的Cat标签
		//使用xpath技术
		Node targetNode = doc.selectSingleNode("//Cat[@id=‘c002‘]");
		//2.删除标签
		targetNode.detach();

		Dom4jUtil.saveDocument(doc, "D:/rk/result.xml");
		System.out.println("执行结束!");
	}
}

2.2、xPath表达式语法

package com.rk.xml.i_xpath;

import java.util.List;

import org.dom4j.Document;
import org.dom4j.Node;

import com.rk.utils.Dom4jUtil;

/**
 * 学习xPath表达式语法
 * @author RK
 *
 */
public class Demo02
{
	public static void main(String[] args)
	{
		String sourceXML = "./src/animals.xml";
		String targetXML = "D:/rk/result.xml";
		Document doc = Dom4jUtil.openDocument(sourceXML);
		String xpath = "";

		/**
		 * 1.  	/      绝对路径      表示从xml的根位置开始或子元素(一个层次结构)
		 */
		xpath = "/Animals";
		xpath = "/Animals/Cat/Home";

		/**
		 * 2. //     相对路径       表示不分任何层次结构的选择元素。
		 */
		xpath = "//Dog/Home";
		xpath = "//Home";

		/**
		 * 3. *      通配符         表示匹配所有元素
		 */
		xpath = "/Animals/*";//根标签Animals下的所有子标签
		xpath = "/Animals//*";//根标签Animals下的所有标签(不分层次结构)

		/**
		 * 4. []      条件           表示选择什么条件下的元素
		 */
		xpath = "/Animals/Cat[2]";//第二个的Cat标签
		xpath = "/Animals/*[last()]";//最后一个的Animals的子标签
		xpath = "//*[@id]";//带有id属性的标签

		/**
		 * 5. @     属性            表示选择属性节点
		 */
		xpath = "//@id"; //选择id属性节点对象,返回的是Attribute对象
		xpath = "//*[not(@id)]";//选择不包含id属性的标签节点
		xpath = "//Cat[@id=‘c002‘]";//选择id属性值为c002的Cat标签
		xpath = "//Cat[@id=‘c002‘ and @name=‘咪咪‘]";//选择id属性值为c002,且name属性为咪咪的Cat标签

		/**
		 *6.  text()   表示选择文本内容
		 */
		//选择Home标签下的文本内容,返回Text对象
		xpath = "//Home/text()";
		xpath = "//Cat/Home[text()=‘地球‘]";//选择Home为“地球”的Cat标签

		@SuppressWarnings("unchecked")
		List<Node> list = doc.selectNodes(xpath);
		for(Node node : list)
		{
			System.out.println(node);
		}

		Dom4jUtil.saveDocument(doc, targetXML);
	}
}
时间: 2024-10-18 13:58:05

XML系列:(8)XML解析-Dom4j的xPath技术的相关文章

Java xml 操作(Dom4J修改xml &#160;&#160;+ xPath技术 &#160;+ SAX解析 + XML约束)

1 XML基础 1)XML的作用 1.1 作为软件配置文件 1.2 作为小型的"数据库" 2)XML语法(由w3c组织规定的) 标签: 标签名不能以数字开头,中间不能有空格,区分大小写.有且仅有一个根标签. 属性: 可有多个属性,但属性值必须用引号(单引号或双引号)包含,但不能省略,也不能单 双混用. 文档声明: <?xml version="1.0" encoding="utf-8"?> encoding="utf-8&q

Dom4J配合XPath解析schema约束的xml配置文件问题

如果一个xml文件没有引入约束,或者引入的是DTD约束时,那么使用dom4j和xpath是可以正常解析的,不引入约束的情况本文不再展示. 引入DTD约束的情况 mybook.dtd: <?xml version="1.0" encoding="UTF-8" ?> <!ELEMENT books (book+)> <!ELEMENT book (name|author|price)+> <!ELEMENT name (#PCD

xml解析-dom4j(比较流行,第三方提供)

需要导入dom4j的包,以提供dom4j的支持. package day06_parser.dom4j; /**dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的 DOM4J是dom4j.org出品的一个开源XML解析包,它的网站中这样定义: Dom4j is an easy to use, open source library for working with XML, XPath and XSLT on the Java platform using the J

dom4j xml的生成与解析

这两天在一直写数据接口,涉及到数据xml文件的生成与解析,在此,简单地记录和总结一下. 其实,生成与解析xml文件主要还是运用java中的I/O文件的知识点. 现在大多数的人写xml文件的生成和解析都使用dom4j,它确实比传统的w3c的写法要简单方便的多.就像jQuery相比于js的优点显而易见一般. dom4j 简介: dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的.dom4j是一个非常优秀的Java XML API,同时它也是一个开放源代码的软件,可以在So

DOM4J操作XML(包括封装和解析)

先来看看dom4j中相应XML的DOM树建立的继承关系 针对于XML标准定义.相应于图2-1列出的内容,dom4j提供了下面实现: 以下给出一个详细事例: package com.iboxpay.settlement.gateway.common.util; import java.io.IOException; import java.io.StringReader; import java.io.StringWriter; import org.dom4j.Document; import

Android开发系列之XML解析

 xml文件存储是常用的数据存储方式,xml解析常用的有SAX解析.DOM解析.PULL解析等.本篇讲述xml的格式,xml的写入方式以及xml的解析.   .xml格式 <cartons> <carton id="1"> <name>天空之城</name> <maker>宫崎骏</maker> <style>冒险</style> <date>1986年8月2日</date

DOM4J操作XML(包含封装和解析)

先来看看dom4j中对应XML的DOM树建立的继承关系 针对于XML标准定义,对应于图2-1列出的内容,dom4j提供了以下实现: 下面给出一个具体事例: package com.iboxpay.settlement.gateway.common.util; import java.io.IOException; import java.io.StringReader; import java.io.StringWriter; import org.dom4j.Document; import

Java学习之Xml系列五:SAX解析——搜索xml内容

本文对SAX解析进一步说明. 另外主要给利用SAX解析方法找到指定条件(如标签名称)的xml文档内容. 首先按需要介绍一下DefaultHandler. DefaultHandler类是SAX2事件处理程序的默认基类.它继承了EntityResolver.DTDHandler.ContentHandler和ErrorHandler这四个接口.包含这四个接口的所有方法,所以我们在编写事件处理程序时,可以不用直接实现这四个接口,而继承该类,然后重写我们需要的方法.(注意:ContentHandler

JAVASE02-Unit012: Unit07: XML语法 、 XML解析

Unit07: XML语法 . XML解析 emplist.xml <?xml version="1.0" encoding="UTF-8"?> <list> <emp id="1"> <name>张三</name> <age>34</age> <gender>男</gender> <salary>3000</salary