XPath的基本语法如下:
/ # 从根节点开始
// # 选择匹配的任何位置
. # 当前节点
.. # 父节点
@ # 选择属性
[node] # 选取所有node子元素
[@attr] # 选取带有attr属性的所有元素
使用XPath选取节点,例如:
//div # 选择所有div元素
//div[@class] # 选择带有class属性的div元素
//div[@id='myId'] # 选择id属性为'myId'的div元素
XPath使用路径表达式来选取节点。例如:
//div/p # 选择所有div下的p元素
//div//p # 选择所有div下的所有p元素
XPath中的谓词用于过滤节点。例如:
//div[@class='highlight'] # 选择class属性为'highlight'的div元素
//ul/li[position()<3] # 选择ul下的前两个li元素
使用通配符匹配元素,例如:
//* # 选择所有元素
//div/* # 选择所有div下的所有子元素
使用XPath提取文本内容,例如:
//p/text() # 提取p元素的文本内容
考虑以下HTML片段:
<html>
<body>
<div id="content">
<p class="intro">Hello, <b>world</b>!</p>
<ul>
<li>Item 1</li>
<li>Item 2</li>
</ul>
</div>
</body>
</html>
对应的XPath表达式:
以上是XPath的一些基础和常用操作,希望这些例子能够帮助你更好地理解和使用XPath。
当使用XPath时,谓词是一种用于过滤节点的表达式。谓词用于在路径中添加条件,以选择满足特定条件的节点。以下是关于XPath谓词的详细解释和案例:
谓词的基本语法是在方括号中放置条件表达式。例如:
//div[@class='highlight'] # 选择class属性为'highlight'的div元素
在谓词中可以使用比较运算符,例如:
//p[@id='para1'] # 选择id属性为'para1'的p元素
//a[@href!='#'] # 选择href属性不等于'#'的a元素
//input[@type='text' and @name='username'] # 选择type为'text'且name为'username'的input元素
位置谓词用于选择特定位置的节点。例如:
//ul/li[1] # 选择ul下的第一个li元素
//div[@class='article']/p[position()=last()] # 选择class为'article'的div下的最后一个p元素
范围谓词用于选择一定范围内的节点。例如:
//div[@id='content']/p[position()>1 and position()<4] # 选择id为'content'的div下的第2到第3个p元素
逻辑运算符(and、or、not)可用于组合多个条件。例如:
//input[@type='text' and (@name='username' or @name='email')] # 选择type为'text'且name为'username'或'name'为'email'的input元素
XPath还提供一些内置函数,如contains()
、starts-with()
等,用于进行更复杂的条件判断。例如:
//a[contains(@href, 'example.com')] # 选择href属性包含'example.com'的a元素
//h2[starts-with(@class, 'header')] # 选择class属性以'header'开头的h2元素
以上是关于XPath谓词的详细解释和案例。通过理解和熟练使用谓词,你可以更精确地定位和提取文档中的数据。