介绍

XML是一种常见的数据交换格式,在Web开发中,我们经常需要解析和操作XML数据。XPath作为一种强大的查询语言,可以帮助我们以简洁、精确的方式定位和操作XML文档中的节点。本文将详细介绍XPath的常用方法,并通过生动的示例让你轻松掌握XPath的精髓。

XPath 基础语法

XPath使用一种路径表达式(Path Expression)来定位XML文档中的节点。下面是XPath的基本语法:

  • /:从根节点开始选取。例如:/bookstore,表示选取根节点下的bookstore节点。
  • //:从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。例如://book,表示选取文档中的所有book节点。
  • .:选取当前节点。例如:./title,表示选取当前节点下的title节点。
  • ..:选取当前节点的父节点。例如:../author,表示选取当前节点的父节点下的author节点。
  • @:选取属性。例如://@lang,表示选取文档中的所有lang属性。

接下来,我们将通过示例来演示这些基本语法的用法。

例子1:选取节点

假设我们有以下XML文档:

1
2
3
4
5
6
7
8
9
10
<bookstore>
<book category="fiction">
<title lang="en">Harry Potter</title>
<author>J.K. Rowling</author>
</book>
<book category="fiction">
<title lang="en">The Hobbit</title>
<author>J.R.R. Tolkien</author>
</book>
</bookstore>

要选取bookstore节点下的第一个book节点,可以使用以下XPath表达式:

1
/bookstore/book[1]

这里的/表示从根节点开始查找,bookstore匹配根节点下的bookstore节点,而book则是它的子节点。使用[1]表示选取第一个匹配的book节点。

例子2:使用条件选择节点

下面的XML文档中,我们要选取categoryfictionbook节点:

1
2
3
4
5
6
7
8
9
10
<bookstore>
<book category="fiction">
<title lang="en">Harry Potter</title>
<author>J.K. Rowling</author>
</book>
<book category="non-fiction">
<title lang="en">Programming 101</title>
<author>John Doe</author>
</book>
</bookstore>

可以使用以下XPath表达式:

1
/bookstore/book[@category='fiction']

这里的[@category='fiction']表示选取category属性值等于fictionbook节点。

例子3:选取多个节点

在下面的示例中,我们要选取price节点值大于10book节点:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<bookstore>
<book>
<title>Book 1</title>
<price>12</price>
</book>
<book>
<title>Book 2</title>
<price>8</price>
</book>
<book>
<title>Book 3</title>
<price>15</price>
</book>
</bookstore>

可以使用以下XPath表达式:

1
/bookstore/book[price > 10]

这里使用了条件表达式[price > 10]来选取price节点值大于10book节点。