首页 文章

用于选择所有文本节点的XPath

提问于
浏览
4

我正在编写一个JavaScript函数,可以用HTML代码替换文本,但要做到这一点,我需要能够以文本节点的形式访问文本 . 以下XPath选择文档中的所有 div 标记:

//div

以下XPath选择属性 class 赋值为 myclass 的所有元素:

//*[@class="myclass"]

以下选择在ID为 comments 的元素下的任何级别发生的所有 text (非文本节点):

//*[@id="comments"]//text()

什么是XPath可用于选择任何元素下的所有文本节点?所以,假设我想要替换字符串 Hebert 的所有非注释事件,并且我需要所有文本节点,以便我可以扫描它们以查找该字符串 . 它会在查询中使用 text() 吗?

1 回答

  • 6

    两种选择:

    • 选择字符串值包含子字符串"Herbert"的所有文本节点:
    //text()[contains(.,'Herbert')]
    
    • 选择字符串值为"Herbert"的所有文本节点:
    //text()[.='Herbert']
    

    请注意你的评论,

    以下选择所有文本(不是文本节点)

    关于XPath, //text() ,是不正确的 . 节点测试text()选择文本节点 . 在字符串上下文中,它将返回文本节点的string-value,但单独 text() 肯定会选择实际的文本节点 .

    另见Testing text() nodes vs string values in XPath

相关问题