如何使用 XPath 选择带有引号字符的文本?

Posted

技术标签:

【中文标题】如何使用 XPath 选择带有引号字符的文本?【英文标题】:How to use XPath to select text with a quote character? 【发布时间】:2018-10-10 14:44:15 【问题描述】:

如何选择包含带有“”的文本的 xpath

假设我在页面上的文字是:“我的文字”(这包括“”)。

当我在 VS 中创建 xpath 时:

"//td[contains(.,'"mytext">')]"

但是 VS 不认为这是正确的,因为它以白色显示 mytext,就好像它不属于 xpath 一样

它说这是一个语法错误,它需要一个','。

那么我怎样才能制作一个使用包含文本的“”的xpth。

【问题讨论】:

【参考方案1】:

答案很简单,转义双引号:

"//td[contains(.,'\"mytext\">')]"

这是需要转义的字符的参考:https://blogs.msdn.microsoft.com/csharpfaq/2004/03/12/what-character-escape-sequences-are-available/

希望对你有帮助。

【讨论】:

那个参考页好像坏了。【参考方案2】:

如果 XPath 的上下文是 XML,则使用 " 转义双引号:

//td[contains(.,'"mytext">')]

另见:Simplified XML Escaping

如果您的 XPat 的上下文不是 XML,您可以尝试

//td[contains(.,concat('"','mytext', '"', '>'))]

看看 VS 是否对那个表达式更满意,或者为 " 常量设置一个单独的变量,并从中分段构建您的 XPath。

如果这对您的上下文没有帮助,请参阅 how to escape single quote in xslt substring function

【讨论】:

以上是关于如何使用 XPath 选择带有引号字符的文本?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 XPath 选择文本不起作用?

升级脚本需要更新带有特殊字符的值(换行单引号markdown文本)到字段中,如何兼容性更好

如何使用 C# 转义 XPath 引号“”

闪亮:如何输入用双引号(“)分隔的文本字符串列表

如何使用 XPath 选择链接的内部文本?

使用 XPath,如何根据节点的文本内容和属性值来选择节点?