我在一个HTML文档中有以下内容:
<div class="prompt input_prompt xh-highlight">
<bdi class="">In</bdi>
" [ ]:"
</div>为了找到这样的情况(我指的是表达式[ ]:),我尝试了以下想法,但都没有奏效:
//div/bdi/parent::*/text()=" [ ]:"
//div/bdi/parent::*[contains(text(), " ")]
//div/bdi/parent::*[contains(text(), " ")]
//div[contains(text(), " [ ]:")]
//div[contains(text(), "[ ]")]
//div[contains(text(), "[ ]")]
//div[contains(text(), "\u00a0]:")]怎样做才是正确的?
发布于 2019-04-08 22:47:40
在XPath本身中,在字符串字面量中表示字符xA0的唯一方法是作为字符本身;因此您可以搜索//div[contains(., "[§]")],其中§是字符xA0。当然,这样做的缺点是对于您的读者来说,问题中的字符是xA0而不是普通空格是不明显的。
XPath通常嵌入在宿主语言中,宿主语言很可能提供另一种书写该字符的方法。例如,如果宿主语言是基于XML的(例如XSLT),那么您可以将其编写为 ,而如果它是Javascript,您可以将其编写为\u00a0。
因此,编写表达式的方式取决于您的宿主语言约定。
发布于 2019-04-08 21:35:37
这可以正常工作:
您将搜索与以下xpath表达式匹配的所有元素:
//div/bdi/parent::*[contains(text(), "]:")]然后循环遍历它们并获得它们的文本,您可以很容易地在逻辑和适当的语言中进行比较,比如python:
for element in elements:
if '[ ]' in element.text:
# some codehttps://stackoverflow.com/questions/55573736
复制相似问题