我有以下HTML
<span class="medium bold day-time-clock">
09:00
<div class="tooltip-box first-free-tip ">
<div class="tooltip-box-inner">
<span class="fa fa-clock-o"></span>
Some more text
</div>
</div>
</span>
我想要一个仅获取文本 09:00 而不是更多文本而不使用text()[1]
的XPath,因为这会导致其他问题。我当前的XPath看起来像这样
("//span[1][contains(@class, 'day-time-clock')]/text()")
我想要一个忽略HTML整个部分的
<div class="tooltip-box first-free-tip ">
<div class="tooltip-box-inner">
<span class="fa fa-clock-o"></span>
Some more text
</div>
</div>
答案 0 :(得分:0)
使用normalize-space()
选择文档的所有非空白节点:
//span[contains(@class, 'day-time-clock')]/text()[normalize-space()]
答案 1 :(得分:0)
您可以使用descendant::
限制position()
节点的级别。
因此,以下表达式确实有效:
span/descendant::node()[2 > position()]
根据您的需要调整谓词中的数字,2
仅作为示例。这种方法的一个缺点是后代的计数仅对后代树中的第一个孩子准确。
另一种方法是限制两者:祖先和后代:
span/descendant::node()[3 > count(ancestor::*) and 1 > count(descendant::*)]
在这里,您还必须调整谓词中的数字以获得任何有用的结果。
答案 2 :(得分:0)
我认为(如果我理解正确的话)
"..//div[contains(@class, 'tooltip-box')]/parent::span"
将您带到那里。