我想查找不需要的嵌套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