XPath基础

      最近感觉xml的用处挺大的,特别是在数据交互的时候,比如ajax从后台取的数据,就可以得到一个xml文本,还有在很多框架的配置都是用xml进行配置,所以懂得如何从xml提取所需要的信息很重要,在网上学习了一下XPath,虽然网上都有,但是自己还是想整理一下,留着日后用用到时可以参考一下。

一、什么是XPath

XPath 使用路径表达式在 XML 文档中进行导航,确切的说它是一个标准的路径,根据该路径可以解析出xml文档里面的信息。

二、xml基本语法。

1、xml文档

<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>

<book>
  <title lang="eng">Harry Potter</title>
  <price>29.99</price>
</book>

<book>
  <title lang="eng">Learning XML</title>
  <price>39.95</price>
</book>

</bookstore>

 

2、选取节点

 表达式          功能
nodename  选取此节点的所有节点
/                 从根节点开始选取
//                从匹配选择的当前节点选择文档中的节点,而不考虑他们的位置
.                 选取当前节点
..                选取当前节点的父节点
@               选取属性
3、列子
 bookstore             选取bookstore节点的所有节点 
bookstore/book     选取bookstore节点下的所以book节点
//book                    选取所有的book节点,而不管它们在文档中的位置
bookstore//book    选取bookstore节点下的所有book节点
//@lang                  选取属性为lang的节点
3、谓语
/bookstore/book[1]                               选取bookstore下的第一个book节点
/bookstore/book[last()]                         选取bookstore节点下的最后一个book节点
/bookstore/book[position()<3]              选取bookstore节点下的第一和第二个节点
//title[@lang]                                         选取属性为lang的所有title节点
//title[@lang='eng']                               选取属性为lang并且值为eng的所以title节点
/bookstore/book[price<32.00]              选取bookstore下的price<32.00的book节点
/bookstore/book[price>30.00]/title       选取bookstore下的book的price>30.00的title节点
4选取未知节点
*               匹配任何元素节点
@*            匹配任何属性节点
node()      匹配任何类型的节点
5列子
/bookstore/*               选取bookstore元素的所以子元素
//*                               选取文档中的所有元素
//title[@*]                   选取所有带有属性的title元素
6、选取若干路径
//book/title|//book/price              选取 book 元素的所有 title 和 price 元素。
//title|//price
/bookstore/book/title|//price
7、XPath 轴
ancestor                                 选取当前节点的所以先辈节点
ancestor-or-self                     选取当前节点的所有先辈节点及该节点
attribute                                选取当前节点的所以属性
child                                       选取当前节点的所有子元素
descendant                           选取当前节点的所以后代元素
descendant-or-self                选取当前节点的所有后代元素(子、孙等)以及当前节点本身。
following                                选取文档中当前节点的结束标签之后的所有节点。
preceding                              选取文档中当前节点的开始标签之前的所有节点。
self                                         选取当前节点
8 、步的语法:
轴名称::节点测试[谓语]
9、例子
child::book                           选取所有属于当前节点的子元素的book节点
attibute::lang                       选取当前节点的lang属性
child::*                                 选取当前节点的所有子节点
attibute::*                            选取当前节点的所以属性
child::text()                           选取当前节点所有文本子节点
child::node()                         选取当前节点的所有子几点
descendant::book                选取当前节点的所有book先辈
ancestor::book                     选取当前节点的所有book父节点
ancestor-or-self::book     
child::*/child::price               选取当前节点的所有孙price节点
10、xpath运算符
预算符             描述              实例                      返回值
|            计算两个节点集    //book|//cd               返回所有拥有 book 和 cd 元素的节点集
+                  加法              5+4                       9
-                   减法              2-1                       1
*                  乘法              2*4                       8
div               除法              8div4                     2
=                 等于              price=9.80                如果 price 是 9.80,则返回 true。如果 price 是 9.90
!=
<
<=
>
>=
or                或           price=9.80 or price=9.50  如果 price 是 9.80,则返回 true。如果 price 是 9.60,则返回 false。
and               与                price>9.00 and price<9.90
mod     计算除法的余数     5 mod 2

三、小结一下

       xpath最大的好处就是可以很容易的从xml文档中提取出所需要的信息,不需要使用for循环从头遍历,要使用xpath语句,必须先创建httpRequest对象,就像ajax一样,缺点就是在不同的浏览器中,有写语法得不到想要的结果,具体的实例见附近。

【无人机】基于改进粒子群算法的无人机路径规划研究[和遗传算法、粒子群算法进行比较](Matlab代码实现)内容概要:本文围绕基于改进粒子群算法的无人机路径规划展开研究,重点探讨了在复杂环境中利用改进粒子群算法(PSO)实现无人机三维路径规划的方法,并将其与遗传算法(GA)、标准粒子群算法等传统优化算法进行对比分析。研究内容涵盖路径规划的多目标优化、避障策略、航路点约束以及算法收敛性和寻优能力的评估,所有实验均通过Matlab代码实现,提供了完整的仿真验证流程。文章还提到了多种智能优化算法在无人机路径规划中的应用比较,突出了改进PSO在收敛速度和全局寻优方面的优势。; 适合人群:具备一定Matlab编程基础和优化算法知识的研究生、科研人员及从事无人机路径规划、智能优化算法研究的相关技术人员。; 使用场景及目标:①用于无人机在复杂地形或动态环境下的三维路径规划仿真研究;②比较不同智能优化算法(如PSO、GA、蚁群算法、RRT等)在路径规划中的性能差异;③为多目标优化问题提供算法选型和改进思路。; 阅读建议:建议读者结合文中提供的Matlab代码进行实践操作,重点关注算法的参数设置、适应度函数设计及路径约束处理方式,同时可参考文中提到的多种算法对比思路,拓展到其他智能优化算法的研究与改进中。
### 关于头歌平台中的 XPath 基础教程 #### 头歌平台概述 头歌(Tougo)是一个专注于编程教育和技术实践的学习平台,涵盖了多种技术领域的内容,其中包括 Web 开发、数据抓取等相关主题。对于学习 XPath基础教程,在头歌平台上可以找到许多针对初学者设计的教学资源。 #### XPath 基础知识 XPath 是一种用于在 XML 和 HTML 文档中导航和定位节点的语言[^2]。它的主要功能是从文档结构中选取特定的节点集合或单个节点。以下是 XPath 的几个核心概念: 1. **路径表达式**: 通过类似于文件系统的路径表示方法来指定节点位置。 ```xpath /html/body/div/h1 ``` 2. **谓语 (Predicates)**: 使用方括号 `[]` 来进一步过滤匹配的结果集。 ```xpath //div[@class='example'] ``` 3. **轴 (Axes)**: 表示当前节点与其他节点的关系方向。 - 子轴 (`child::`):选择子节点。 - 后代轴 (`descendant::`):选择后代节点。 - 属性轴 (`attribute::`):访问属性节点。 4. **逻辑运算符**: 可以组合多个条件来进行更复杂的筛选[^4]。 ```xpath //a[contains(@href, 'google') and text()='Search'] ``` #### 在头歌平台上的 XPath 实践案例 假设我们正在分析一段简单的 HTML 页面代码如下: ```html <html> <body> <div class="container"> <h1>Welcome to the HeadGo Platform</h1> <p>This is a paragraph.</p> <a href="https://headgo.com">Visit HeadGo Website</a> <ul> <li>Item 1</li> <li>Item 2</li> </ul> </div> </body> </html> ``` ##### 示例 1: 提取页面标题 如果要获取 `<h1>` 标签内的文本内容,则可编写以下 XPath 查询: ```xpath //h1/text() ``` 这会返回字符串 `"Welcome to the HeadGo Platform"`[^1]。 ##### 示例 2: 获取链接地址 为了提取超链接的目标 URL 地址,可以用下面的 XPath 表达式实现: ```xpath //a/@href ``` 此命令将返回 `"https://headgo.com"`[^2]。 ##### 示例 3: 结合逻辑判断筛选元素 当需要查找既包含某些关键字又满足其他特性的标签时,可以利用逻辑运算符完成任务。例如寻找所有带有 `'item'` 字样的列表项并排除第一个项目外的所有条目: ```xpath //ul/li[position() > 1 and contains(text(), 'item')] ``` 以上就是在头歌平台学习 XPath 所涉及的一些基本知识点以及实际应用场景的例子说明。 ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值