当更改为[node()]返回元素时,为什么以[*]结尾的Xpath表达式返回空列表

时间:2011-05-21 20:14:35

标签: xml xpath predicate

我有一个xml文件,其中sortbits元素有32个bit元素作为子元素。如果我使用xpath表达式

/config/portmod/sortbits/bit[*]

它返回一个空列表。

如果我将其更改为

/config/portmod/sortbits/bit[node()]

它会返回一个NodeList,其中包含所有32个bit元素。

表达式

/config/portmod/sortbits/bit[last()]

返回最后一个元素。为什么[*]表达式没有返回任何内容?

1 个答案:

答案 0 :(得分:3)

表达式bit[*]返回具有子元素的位元素。如果没有返回任何内容,可能没有包含子元素的位元素。

表达式bit[node()]返回具有任何类型子节点的位元素,例如文本节点子节点。假设bit[node()]返回元素而bit[*]没有,则这些元素有一个文本节点子节点,但没有元素节点子节点。