我有以下代码,我想按文字选择标签。由于两个原因,我无法使用//label[text()='some label']
或//label[text()='other label']
:
我可以使用contains()函数,但我真的不想这样做。
<label>
<span>some span</span>
some label
</label>
<label>
other label
<span>other span</span>
</label>
已解决???
//label[normalize-space(text()) = 'some label']
但为什么这会剥离内部节点?我不明白。根据{{3}},只应移除空格,而不删除节点。
答案 0 :(得分:0)
如果您使用
//label[text()[normalize-space() = 'some label']]
然后我希望你得到你想要的东西。然而,它也会选择像
这样的标签<label>text1<span>span text</span>some label</label>
一般情况下,混合内容和几个带有XPath 1.0的子文本节点有点难以满足所有可能的情况,使用XPath 2.0可以//label[normalize-space(string-join(text(), '')) = 'some label']
更精确。