我想查找不需要的嵌套divs并通过查找只有一个元素(忽略空白节点)的div来清理它们。XPath选择div与单个孩子忽略空白?
<div>
<div>Text in nested div</div>
</div>
到目前为止,我有以下xpath似乎部分工作。
//div[count(node()[normalize-space()]) = 1]
我想查找不需要的嵌套divs并通过查找只有一个元素(忽略空白节点)的div来清理它们。XPath选择div与单个孩子忽略空白?
<div>
<div>Text in nested div</div>
</div>
到目前为止,我有以下xpath似乎部分工作。
//div[count(node()[normalize-space()]) = 1]
使用此短,高效表达:
//div[*[1][self::div]][not(*[2]|text()[normalize-space()])]
那是什么意思?如果第一个元素是div,第二个元素不存在或者是空元素? – Xeoncross 2013-03-22 18:51:16
@Xeoncross,这表示第一个子元素必须是'div',并且不应该有第二个子元素,并且不应该有任何非空白的文本节点子元素。效率是子元素没有被“计数,只有和1比较”。想象一下,有许多具有数百个子元素的'div' ... – 2013-03-22 18:55:20
'not(* [2] | text()[normalize-space()])意味着没有第二个元素或第二个元素是空的空白被删除)。 – Xeoncross 2014-01-06 02:07:33
请这给一试:
//div[not(*[2]) and div and not(text()[normalize-space()])]
这应该选择div
S作一个子元素,并没有非空格子文本节点。
以何种方式它部分不工作? – JLRishe 2013-03-22 16:46:56