text()
XPath 的 text()
函数用于选择 XML 文档中的文本节点,文本节点包含元素的文本内容。
使用 text()
函数可以提取和处理 XML 元素的文本信息。
以下是关于 text()
函数的详细说明和一些示例:
xml
<bookstore>
<book category="cooking">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="children">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category="web">
<title lang="en">Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>
</bookstore>
基本用法
选择元素的文本内容
xpath
//element/text()
这将选择所有名为 element
的元素的文本内容。
例如选择所有 <title>
元素的文本内容:
xpath
//title/text()
选择包含特定文本的元素
xpath
//element[text()='value']
例如选择文本内容为 Everyday Italian 的 <title>
元素:
xpath
//title[text()='Everyday Italian']
选择包含特定文本的元素(部分匹配)
xpath
//element[contains(text(), 'value')]
例如选择文本内容包含 Italian 的 <title>
元素:
xpath
//title[contains(text(), 'Italian')]
选择作者名字为 J K. Rowling
的书籍
返回结果包含 Harry Potter 的 <book>
元素。
xpath
//book[author/text()='J K. Rowling']
注意事项
text()
函数仅选择文本节点,不包括元素标签本身。text()
函数可以与其他 XPath 表达式结合使用,以构建更复杂的查询。- 在处理包含多个文本节点的元素时,可能需要使用
normalize-space()
函数去除多余的空白字符。
高级用法
选择包含多个文本节点的元素
使用 normalize-space()
函数标准化包含多个文本节点的元素,去除前后空白,并将中间的多个空白合并为一个空白:
xpath
//book[normalize-space(author)='J K. Rowling']
返回结果作者为 J K. Rowling
的 <book>
元素。
选择特定文本节点的父元素
例如选择标题为 Harry Potter 的书籍:
xpath
//parent[element/text()='value']
//book[title/text()='Harry Potter']
返回结果:包含 Harry Potter
的 <book>
元素。