世界杯赔率_男乒世界杯决赛 - fjpftz.com

HOME> 贝利世界杯> XPath的定义、基础语法、使用示例和高级用法

XPath的定义、基础语法、使用示例和高级用法

2025-09-01 00:13:33

XPath(XML Path Language)是一种用于在XML文档中定位和选择节点的语言,XPath的选择功能非常强大,可以通过简单的路径选择语法,选取文档中的任意节点或节点集,同样也支持 HTML 元素的解析,本文介绍了XPath的定义、基础语法、使用示例、高级用法、.NET中使用举例等

一、定义

XPath(XML Path Language)是一种用于在 XML 文档中定位和选择节点的语言。XPath的选择功能非常强大,可以通过简单的路径选择语法,选取文档中的任意节点或节点集。同样也支持 HTML 元素的解析,学会XPath,可以轻松抓取网页数据,提高数据获取效率。

二、XPath基础语法

节点(Nodes): XML 文档的基本构建块,可以是元素、属性、文本等。

路径表达式: 用于定位 XML 文档中的节点。路径表达式由一系列步骤组成,每个步骤用斜杠 / 分隔。

XPath的节点是指在XML或HTML文档中被选择的元素或属性。XPath中有7种类型的节点,包括元素节点、属性节点、文本节点、命名空间节点、处理指令节点、注释节点以及文档节点(或称为根节点)。

1

2

3

4

5

6

7

8

9

10

11

12

13

- 元素节点:表示XML或HTML文档中的元素。例如,在HTML文档中,、

等都是元素节点。在XPath中,可以使用元素名称来选择元素节点,例如://div表示选择所有的

元素。

- 属性节点:表示XML或HTML文档中元素的属性。例如,在HTML文档中,元素的class、id、src等属性都是属性节点。在XPath中,可以使用@符号来选择属性节点,例如://img/@src表示选择所有元素的src属性。

- 文本节点:表示XML或HTML文档中的文本内容。例如,在HTML文档中,

标签中的文本内容就是文本节点。在XPath中,可以使用text()函数来选择文本节点,例如://p/text()表示选择所有

元素中的文本内容。

- 命名空间节点:表示XML文档中的命名空间。命名空间是一种避免元素命名冲突的方法。在XPath中,可以使用namespace轴来选择命名空间节点,例如://namespace::*表示选择所有的命名空间节点。

- 处理指令节点:表示XML文档中的处理指令。处理指令是一种用来给处理器传递指令的机制。在XPath中,可以使用processing-instruction()函数来选择处理指令节点,例如://processing-instruction('xml-stylesheet')表示选择所有的xml-stylesheet处理指令节点。

- 注释节点:表示XML或HTML文档中的注释。注释是一种用来添加说明和备注的机制。在XPath中,可以使用comment()函数来选择注释节点,例如://comment()表示选择所有的注释节点。

- 文档节点:表示整个XML或HTML文档。文档节点也被称为根节点。在XPath中,可以使用/符号来选择文档节点,例如:/表示选择整个文档节点。

本文使用XML示例如下

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

活着

余华

作家出版社

2012-8-1

191

20.00

平装

余华作品(2012版)

9787506365437

撒哈拉的故事

三毛

哈尔滨出版社

2003-8

217

15.80

平装

三毛全集(华文天下2003版)

9787806398791

明朝那些事儿(1-9)

当年明月

中国海关出版社

2009-4

2682

358.20

精装16开

明朝那些事儿(典藏本)

9787801656087

除了这些基本节点类型之外,XPath还支持使用通配符:

通配符描述示例*匹配任何元素节点//book/* 选取元素下的任意子元素节点@*匹配任何属性节点//book/@* 选取元素上的任意属性节点,如中的category属性node()匹配任何类型的节点//book/node() 选取元素下的所有类型的子节点,包括元素节点、文本节点、注释节点等以及使用谓词来进一步筛选选择的节点集。谓词是一种用来对节点进行过滤和排序的机制,可以包含比较运算符、逻辑运算符和函数等,部分示例如下:

谓语描述示例[position()=n]选取位于指定位置的节点。n 是节点的位置(从 1 开始计数)//book[position()=1] 选取第一个元素[last()=n]选取位于指定位置的最后一个节点。n 是节点的位置(从 1 开始计数)//book[last()=1] 选取最后一个元素[contains(string, substring)]选取包含指定子字符串的节点。string 是节点的文本内容,substring 是要查找的子字符串//book[contains(title, 'XML')] 选取标题中包含子字符串'XML'的元素[starts-with(string, prefix)]选取以指定前缀开始的节点。string 是节点的文本内容,prefix 是要匹配的前缀字符串//book[starts-with(title, 'The')] 选取标题以'The'开始的元素[text()=string]选取文本内容完全匹配的节点。string 是要匹配的文本内容//book[text()='Book Title'] 选取文本内容为'Book Title'的元素[@category='non-fiction']选取具有指定属性值的节点。category 是属性名称,non-fiction 是要匹配的值//book[@category='non-fiction'] 选取具有属性category值为'non-fiction'的元素XPath使用路径表达式来选取XML或HTML文档中的节点或节点集。下面是一些常用的路径表达式:

表达式描述示例nodename选取此节点的所有子节点//bookstore/book 选取元素下所有子元素/从根节点选取直接子节点/bookstore 从根节点选取元素//从当前节点选取子孙节点//book 选取所有元素,无论它们在文档中的位置.选取当前节点./title 选取当前节点的子元素..选取当前节点的父节点../price 选取当前节点的父节点的<price>子元素@选取属性//book/@id 选取所有<book>元素的id属性</p> <p>三、XPath使用示例</p> <p>选择所有名称为title的节点://title</p> <p>选择所有名称为title,同时属性lang的值为eng的节点://title[@lang='eng']</p> <p>选择id为bookstore的节点的所有子节点:/bookstore/*</p> <p>选择id为bookstore的节点的所有子孙节点:/bookstore//*</p> <p>选择id为bookstore的节点的直接子节点中的第一个节点:/bookstore/*[1]</p> <p>选择id为bookstore的节点的属性为category的值:/bookstore/@category</p> <p>四、XPath的高级用法</p> <p>XPath语言提供了一些高级的功能,包括:</p> <p>轴(Axes):XPath提供了几种轴,用于在文档中导航。包括child(子元素)、ancestor(祖先元素)、descendant(后代元素)和following-sibling(后续同级元素)等。</p> <p>函数:XPath提供了一些内置的函数,如count(),concat(),string(),local-name(),contains(),not(),string-length()等,可以用于处理和操作节点和属性3。</p> <p>条件语句:XPath提供了条件语句(如if-else语句),使得我们可以根据某些条件来选择性地提取元素或属性3。</p> <p>五、.NET中使用</p> <p>1</p> <p>2</p> <p>3</p> <p>4</p> <p>5</p> <p>6</p> <p>7</p> <p>8</p> <p>9</p> <p>10</p> <p>11</p> <p>12</p> <p>13</p> <p>14</p> <p>15</p> <p>16</p> <p>17</p> <p>18</p> <p>19</p> <p>20</p> <p>21</p> <p>22</p> <p>23</p> <p>24</p> <p>25</p> <p>26</p> <p>27</p> <p>28</p> <p>29</p> <p>30</p> <p>31</p> <p>32</p> <p>33</p> <p>34</p> <p>35</p> <p>36</p> <p>37</p> <p>38</p> <p>39</p> <p>40</p> <p>41</p> <p>42</p> <p>43</p> <p>44</p> <p>45</p> <p>46</p> <p>47</p> <p>48</p> <p>49</p> <p>50</p> <p>51</p> <p>52</p> <p>53</p> <p>54</p> <p>55</p> <p>56</p> <p>57</p> <p>58</p> <p>59</p> <p>60</p> <p>61</p> <p>62</p> <p>63</p> <p>64</p> <p>// XML 文档内容</p> <p>string xmlContent = @"</p> <p><bookstore></p> <p><book category='fiction'></p> <p><title>活着

余华

作家出版社

2012-8-1

191

20.00

平装

余华作品(2012版)

9787506365437

撒哈拉的故事

三毛

哈尔滨出版社

2003-8

217

15.80

平装

三毛全集(华文天下2003版)

9787806398791

明朝那些事儿(1-9)

当年明月

中国海关出版社

2009-4

2682

358.20

精装16开

明朝那些事儿(典藏本)

9787801656087

";

// 创建 XPath 文档

using (XmlReader reader = XmlReader.Create(new StringReader(xmlContent)))

{

XPathDocument xpathDoc = new XPathDocument(reader);

// 创建 XPath 导航器

XPathNavigator navigator = xpathDoc.CreateNavigator();

// 使用 XPath 查询(选择所有位于bookstore下、其category属性值为'fiction'的book元素中的title元素)

string xpathExpression = "//bookstore/book[@category='fiction']/title";

XPathNodeIterator nodes = navigator.Select(xpathExpression);

// 检查是否有匹配的节点

if (nodes != null)

{

// 遍历结果

while (nodes.MoveNext())

{

// 检查当前节点是否为空

if (nodes.Current != null)

{

Console.WriteLine(nodes.Current.Value);

}

}

}

}

六、XPath在自动化测试中的应用

XPath最常用的场景之一就是在自动化测试中用来选择HTML DOM节点。例如,在Selenium自动化测试中,可以使用XPath作为选择web元素的主要方法之一。通过XPath选择器,可以方便地定位页面中的任意元素,进行自动化测试操作。

七、XPath的优势与不足

XPath的优势在于其强大的选择功能,可以通过简单的路径选择语法,选取文档中的任意节点或节点集。此外,XPath还支持超过100个内建函数,可用于字符串处理、数值计算、日期和时间比较等等。这些函数可以大大提高数据处理的效率。

然而,XPath也有其不足之处。首先,XPath对于复杂的文档结构可能会变得非常复杂,导致选择语句难以理解和维护。其次,XPath在处理大量数据时可能会出现性能问题,因为它需要遍历整个文档来查找匹配的节点。因此,在使用XPath时需要注意优化查询语句,提高查询效率。

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走! 希望能帮助到你!【100%无套路免费领取】

Copyright © 2022 世界杯赔率_男乒世界杯决赛 - fjpftz.com All Rights Reserved.