千家信息网

XML中XPATH语法的示例分析

发表于:2025-01-18 作者:千家信息网编辑
千家信息网最后更新 2025年01月18日,这篇文章主要为大家展示了"XML中XPATH语法的示例分析",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"XML中XPATH语法的示例分析"这篇文章吧。为什
千家信息网最后更新 2025年01月18日XML中XPATH语法的示例分析

这篇文章主要为大家展示了"XML中XPATH语法的示例分析",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"XML中XPATH语法的示例分析"这篇文章吧。

为什么需要xpath?

在使用dom4j的时候,我们不能跨层获取某一个元素,必须一层一层去获取,这就非常麻烦。
所以为了我们更方便地访问某个节点,我们可以使用xpath技术,它可以让我们非常方便地读取到指定节点。

xpath通常结合dom4j配合使用,而且如果要使用xpath,则需要引入一个新的包jaxen-1.1-beta-6.jar

xpath的基础语法有以下几点:

1.基本的xpath语法类似于在一个文件系统中定位文件,如果路径以斜线/开始,那么该路径就表示到一个元素的绝对路径.

(1)/AAA,它表示选择根元素AAA

这里                                    这里

(2)/AAA/CCC,表示选择AAA的所有CCC子元素

        这里                            这里

(3)/AAA/DDD/BBB,表示选择AAA的子元素DDD的所有BBB子元素

                            这里        

那么怎么在dom4j中运用xpath呢?其实很简单:

//1.得到SAXReader解析器SAXReader saxReader = new SAXReader();//2.指定去解析哪个文件Document document = saxReader.read(new File(path));//3.可以使用xpath随心读取// document.selectNodes(args)返回多个元素// document.selectSingleNode(args)返回单个元素List nodes = document.selectNodes("/AAA/BBB");

通过dom4j得到document对象后,可以使用document的selectNodes(args)方法,这个方法会根据你写的xpath路径返回一个List,余下的操作就和dom4j类似了。

同时它也有一个selectSingleNode(args)方法,用于返回一个单个的Node。


下面继续介绍其他的xpath语法:

2.如果路径以双斜线//开头,则表示文档中所有满足双斜线//之后规则的元素(无论层级关系)

(1)//BBB,它表示选择所有BBB元素

    这里        这里            这里                            这里            这里            

(2)//DDD/BBB,表示所有父元素是DDD的BBB元素

                        这里                            这里            这里            

3.星号*表示选择所有由星号之前路径所定位的元素

(1)/AAA/CCC/DDD/*,它表示选择所有路径依附于/AAA/CCC/DDD的元素:

                                                                                                这里                        这里                        这里                        这里                                                                                        

(2)/*/*/*/BBB,它表示所有的有3个祖先元素的BBB元素

                        这里                        这里                                                                        这里                        这里                                                            这里                                                    

(3)//*,它表示选择所有的元素


4.方括号里的表达式可以进一步地指定元素,其中数字表示元素在选择集里的位置,而last()函数则表示选择集中的最后一个元素。特别要注意的是这里的下标是从1开始的,而不是0!
(1)/AAA/BBB[1],它表示选择AAA的第一个BBB子元素

    这个            

(2)/AAA/BBB[last()],表示选择AAA的最后一个BBB元素

                这个

5.对属性的操作

(1)//@id,选择所有的id属性,注意:是把所有的id属性当做节点返回,而不是返回有id属性的节点。

    返回这里的id属性节点    也返回这里的id属性节点        

(2)//BBB[@id],选择所有有id属性的BBB节点

    返回这个BBB节点    也返回这个BBB节点        

(3)//BBB[@name],选择所有有name属性的BBB节点

            返回这个BBB节点    

(4)//BBB[@*],选择所有有属性的BBB节点

    返回这个BBB节点    返回这个BBB节点    返回这个BBB节点    

(5)//BBB[not(@*)],选择所有没有属性的BBB节点

                这个

6.属性的值可以被用来作为选择的准则

(1)//BBB[@id='b1'],选择含有属性id且其值为'b1'的BBB元素

    这个        

7.count()函数可以计数所选元素的个数

(1)//*[count(BBB)=2],选择含有2个BBB子元素的元素

                                    返回这个元素                                            

(2)//*[count(*)=2],选择含有2个子元素的元素

                                    返回这个元素                        也返回这个元素                    

还有很多其他的语法,包括很多函数的应用,用的不多,这里不做介绍


另外,上述介绍的几点语法可以任意组合,比如下述的xml文档:

                        k1                            k2这个                    

假如我们现在要找AAA元素下面的第1个BBB子元素下面的第2CCC子元素的KKK子元素,则xpath路径应该这么写:
/AAA/BBB[1]/CCC[2]/KKK

为什么需要xpath?

在使用dom4j的时候,我们不能跨层获取某一个元素,必须一层一层去获取,这就非常麻烦。
所以为了我们更方便地访问某个节点,我们可以使用xpath技术,它可以让我们非常方便地读取到指定节点。

xpath通常结合dom4j配合使用,而且如果要使用xpath,则需要引入一个新的包jaxen-1.1-beta-6.jar

xpath的基础语法有以下几点:

1.基本的xpath语法类似于在一个文件系统中定位文件,如果路径以斜线/开始,那么该路径就表示到一个元素的绝对路径.

(1)/AAA,它表示选择根元素AAA

这里                                    这里

(2)/AAA/CCC,表示选择AAA的所有CCC子元素

        这里                            这里

(3)/AAA/DDD/BBB,表示选择AAA的子元素DDD的所有BBB子元素

                            这里        

那么怎么在dom4j中运用xpath呢?其实很简单:

//1.得到SAXReader解析器SAXReader saxReader = new SAXReader();//2.指定去解析哪个文件Document document = saxReader.read(new File(path));//3.可以使用xpath随心读取// document.selectNodes(args)返回多个元素// document.selectSingleNode(args)返回单个元素List nodes = document.selectNodes("/AAA/BBB");

通过dom4j得到document对象后,可以使用document的selectNodes(args)方法,这个方法会根据你写的xpath路径返回一个List,余下的操作就和dom4j类似了。

同时它也有一个selectSingleNode(args)方法,用于返回一个单个的Node。


下面继续介绍其他的xpath语法:

2.如果路径以双斜线//开头,则表示文档中所有满足双斜线//之后规则的元素(无论层级关系)

(1)//BBB,它表示选择所有BBB元素

    这里        这里            这里                            这里            这里            

(2)//DDD/BBB,表示所有父元素是DDD的BBB元素

                        这里                            这里            这里            

3.星号*表示选择所有由星号之前路径所定位的元素

(1)/AAA/CCC/DDD/*,它表示选择所有路径依附于/AAA/CCC/DDD的元素:

                                                                                                这里                        这里                        这里                        这里                                                                                        

(2)/*/*/*/BBB,它表示所有的有3个祖先元素的BBB元素

                        这里                        这里                                                                        这里                        这里                                                            这里                                                            

(3)//*,它表示选择所有的元素


4.方括号里的表达式可以进一步地指定元素,其中数字表示元素在选择集里的位置,而last()函数则表示选择集中的最后一个元素。特别要注意的是这里的下标是从1开始的,而不是0!
(1)/AAA/BBB[1],它表示选择AAA的第一个BBB子元素

    这个            

(2)/AAA/BBB[last()],表示选择AAA的最后一个BBB元素

                这个

5.对属性的操作

(1)//@id,选择所有的id属性,注意:是把所有的id属性当做节点返回,而不是返回有id属性的节点。

    返回这里的id属性节点    也返回这里的id属性节点        

(2)//BBB[@id],选择所有有id属性的BBB节点

    返回这个BBB节点    也返回这个BBB节点        

(3)//BBB[@name],选择所有有name属性的BBB节点

            返回这个BBB节点    

(4)//BBB[@*],选择所有有属性的BBB节点

    返回这个BBB节点    返回这个BBB节点    返回这个BBB节点    

(5)//BBB[not(@*)],选择所有没有属性的BBB节点

                这个

6.属性的值可以被用来作为选择的准则

(1)//BBB[@id='b1'],选择含有属性id且其值为'b1'的BBB元素

    这个        

7.count()函数可以计数所选元素的个数

(1)//*[count(BBB)=2],选择含有2个BBB子元素的元素

                                    返回这个元素                                            

(2)//*[count(*)=2],选择含有2个子元素的元素

                                    返回这个元素                        也返回这个元素                    

还有很多其他的语法,包括很多函数的应用,用的不多,这里不做介绍


另外,上述介绍的几点语法可以任意组合,比如下述的xml文档:

                        k1                            k2这个                    

假如我们现在要找AAA元素下面的第1个BBB子元素下面的第2CCC子元素的KKK子元素,则xpath路径应该这么写:
/AAA/BBB[1]/CCC[2]/KKK

以上是"XML中XPATH语法的示例分析"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

元素 选择 节点 属性 路径 语法 函数 文件 斜线 方法 单个 文档 星号 面的 定位 示例 分析 内容 篇文章 下标 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 sdf数据库创建 数据库中的事务特性 海南运教互联网科技有限公司 数据库自然连接是什么 我的世界服务器附魔书价格 广州网络安全优异柚米 陕西网络安全企业 nds 自制服务器 数据库设计过程验证设计 联想电脑数据库迁移 多玩我的世界创服务器 网络安全关键技术三大类 软件开发里pr pm是什么意思 南阳师范学院软件开发怎么样 广州契家互联网科技 服务器怎么降风险 怀化软件开发培训价格 电脑连手机热点的服务器地址 mq客户端和服务器端怎么获取的 电脑无线网络安全密钥无法输入 杭州老夫子网络技术公司 丽水云软件开发流程八个步骤 实时数据库转成关系数据库 网络安全等保2.0测评手册 wegame剑网三跟官网服务器互通吗 cf进去服务器反应慢 广州市众赢互联网科技有限公司 气象局网络安全问题 面试软件开发英语介绍 陕西网络技术服务市场价
0