微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

XML系列:8XML解析-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方法

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

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


1.2、xPath语法

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



2、xPath代码示例


2.1、第一个示例

packagecom.rk.xml.i_xpath;

importorg.dom4j.Document;
importorg.dom4j.Node;

importcom.rk.utils.Dom4jUtil;

/**
*第一个示例
*@authorRK
*
*/
publicclassDemo01
{
	publicstaticvoidmain(String[]args)
	{
		/**
		*需求:删除id值为“c002”的Cat标签
		*/
		Documentdoc=Dom4jUtil.opendocument("./src/animals.xml");
		//1.查询id值为“c002”的Cat标签
		//使用xpath技术
		NodetargetNode=doc.selectSingleNode("//Cat[@id='c002']");
		//2.删除标签
		targetNode.detach();
		
		Dom4jUtil.saveDocument(doc,"D:/rk/result.xml");
		System.out.println("执行结束!");
	}
}



2.2、xPath表达式语法

packagecom.rk.xml.i_xpath;

importjava.util.List;

importorg.dom4j.Document;
importorg.dom4j.Node;

importcom.rk.utils.Dom4jUtil;

/**
*学习xPath表达式语法
*@authorRK
*
*/
publicclassDemo02
{
	publicstaticvoidmain(String[]args)
	{
		StringsourceXML="./src/animals.xml";
		StringtargetXML="D:/rk/result.xml";
		Documentdoc=Dom4jUtil.opendocument(sourceXML);
		Stringxpath="";
		
		/**
		*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(Nodenode:list)
		{
			System.out.println(node);
		}
		
		Dom4jUtil.saveDocument(doc,targetXML);
	}
}

原文地址:https://www.jb51.cc/xml/295225.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。