XML六:如何使用Java操作XML?XPath路径表达式(查询XML,十分重要,经常使用的)

问题引入:把工资大于3000的员工提取出来;或者,编号为3310的员工信息提出来;难道要编写程序挨个遍历,然后提取?显然不可取,工作量太大;

XML有专门的查询工具:XPath;

 

目录

一:XPath简介

1.XPath两种最常见的表达式:基本表达式;谓语表达式;

(1)XPath基本表达式

(2)XPath谓语表达式:在基本表达式的基础上,增加了额外的约束条件

2.在使用Dom4j,利用XPath查询时候,必须要先下载Jaxen的jar包;

二:XPath示例程序

1.准备的XML:

2.查询的基本程序架构:

3.在上面基本程序架构中,使用不同的XPath表达式,查询演示

(1)查询所有根节点(<hr>元素)下所有直接的子<employee>元素:"/hr/employee"

(2)查询XML中所有的<employee>元素,而不在意其位置:"//employee"

(3)获取所有“<salary>元素值大于等于4000”的<employee>元素:"//employee[salary>=4000]"

(4)查询,包含<name>子元素,且<name>元素值为“李四”的,<employee>元素:"//employee[name='李四']"

(5)查询,属性等于某值的所有<employee>属性:"//employee[@no=3304]"

(6)获得第一个员工的信息:"//employee[1]"

(7)获得最后一个员工的信息:"//employee[last()]"

(8)获取前三个员工:"//employee[position()<4]"

(9)提取第二个和第四个员工和第五个员工:"//employee[2] | //employee[4] | //employee[5]"

 


一:XPath简介

XPath:是XML的查询语言,可以极大简化XML的查询和提取的过程;

1.XPath两种最常见的表达式:基本表达式;谓语表达式;

(1)XPath基本表达式


(2)XPath谓语表达式:在基本表达式的基础上,增加了额外的约束条件

 


2.在使用Dom4j,利用XPath查询时候,必须要先下载Jaxen的jar包;

 

发现,无法访问http://jaxen.codehaus.org/

解决办法:可以访问https://maven.aliyun.com/mvn/search;通过阿里提供的代码仓库找到需要的jar包:


二:XPath示例程序

1.准备的XML:

<?xml version="1.0" encoding="UTF-8"?>
<!-- 人力资源管理系统 --><!--xmlns:xsi的意思是告诉XML文档,我们的约束是使用Schema;xsi:noNamespaceSchemaLocation:指向xsd文件 -->
<hr xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:noNamespaceSchemaLocation="hr-schema.xsd">
	<employee no="3301">   <!-- 标签和属性尽量起的有意义,做到见名知意 -->
		<name>李刚</name>
		<age>31</age>
		<salary>4000</salary>
		<department>    <!-- 标签可以嵌套 -->
			<dName>会计</dName>
			<dAddress>4楼103室</dAddress>
		</department>
	</employee>
	<employee no="3302">
		<name>李四</name>
		<age>29</age>
		<salary>5000</salary>
		<department>
			<dName>工程部门</dName>
			<dAddress>4楼105室</dAddress>
		</department>
	</employee>
	<employee no="3303">
		<name>王红</name>
		<age>35</age>
		<salary>3800</salary>
		<department>
			<dName>行政部门</dName>
			<dAddress>3楼301室</dAddress>
		</department>
	</employee>
	<employee no="3304">
		<name>王华</name>
		<age>28</age>
		<salary>4300</salary>
		<department>
			<dName>行政部门</dName>
			<dAddress>3楼301室</dAddress>
		</department>
	</employee>
	<employee no="3305">
		<name>刘铁</name>
		<age>27</age>
		<salary>3300</salary>
		<department>
			<dName>行政部门</dName>
			<dAddress>3楼301室</dAddress>
		</department>
	</employee>	
</hr>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值