我希望这是一个小问题:
我想搜索一个可以包含双引号“和/或单引号”的文本。现在我可以使用这个:
"//a[contains(text(), '"+ mytext +"')]"
或这个:
'//a[contains(text(), "'+ mytext +'")]'
但如果我有 mytext 是这样的:
a'b"c
我(当然)得到一个 xpath 错误(无效的 XPath 表达式)。我怎样才能避免它?
在 XPath 2.0 中,字符串文字的定界引号可以通过加倍: 包含在文字中"He said, ""I can't"""
。
在 XPath 1.0 中,这样的字符串不能写成文字,但可以使用 concat() 表示:concat("He said, ", '"', "I can't", '"')
当然,如果这样的 XPath 表达式随后要在诸如 Python 之类的宿主语言中编写为字符串文字,则必须根据 Python 规则进一步对引号进行转义。
使用 Python 三引号 r"""a'b"c"""。在 xpath 中,使用 escape 。