我想捕获td标签内的文本,但只想要标签内没有的文本<strong>
或<b>
。
例如,使用b标签的情况
<td class="">
<b>In Care Of Name</b>
text that I want to catch
</td>
对于这种情况,我可以使用此 xpath 表达式检索文本
//td[starts-with(., "In Care Of Name")]//text()[not(ancestor::b)]
我得到了预期的结果:
我想捕获的文本
或使用强力的情况下
<td class="">
<strong>In Care Of Name</strong>
text that I want to catch
</td>
对于这种情况,我可以使用此 xpath 表达式检索文本
//td[starts-with(., "In Care Of Name")]//text()[not(parent::strong)]
我尝试使用以下表达式将这两个 xpath 连接在一个上:
//td[starts-with(., "In Care Of Name")]//text()[not(parent::strong) or not(ancestor::b)]
我得到了
在我想
捕捉的名字文本中
事实上,我得到了两个文本元素,这不是我所期望的。
任何关于问题的想法。我需要改变解决这个问题的方法吗?
提前谢谢。
这个XPath,
//td[starts-with(., "In Care Of Name")]/text()
将返回字符串值以In Care Of Name
开头的td
的直接文本节点子节点:
text that I want to catch
对于涉及td
的b
子级和strong
级的两个 XML 变体。
有关 XPath 中文本节点和字符串值之间的差异的更多详细信息,请参阅XPath 中的测试 text(( 节点与字符串值。
你想要not(A or B)
(或者,not(A) and not(B)
(而不是not(A) or not(B)
。