Skip to content

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> 元素。