任何人都可以解释下面写的XPath语法:
xmlDoc.documentElement.selectNodes("//*/Expression[.!='']")
基本上,我需要澄清上述语法的参数路径。
答案 0 :(得分:4)
选择所有<Expression>
元素:
//*/
- 这意味着除了
Expression
- 元素名称
[.!='']
- 这意味着当前节点值不为空,即当前节点.
不是!=
空''
答案 1 :(得分:2)
//*
选择所有元素。
//*/Expression
选择所有Expression
子元素。
//*/Expression[.!='']
选择非空 string-values 的所有Expression
子元素。
元素节点的字符串值是的串联 字符串 - 元素节点的所有文本节点后代的值 文件订单。
注意:这 与 empty 相同。空元素根本没有孩子。
考虑一个例子:
<Expression id="e1">
<Expression id="e2"/>
<Expression id="e3"><c/></Expression>
<Expression id="e4">
<b/>
</Expression>
<Expression id="e5">
<a>text1</a>
</Expression>
<Expression id="e6">test2<c/></Expression>
</Expression>
Expression
e1
将不会被选中,因为作为根元素,它不是任何其他元素的子。
Expression
e2
将不会被选中,因为其字符串值为''。
Expression
e3
不会被选中,因为它的字符串值为'',即使e3
本身不为空。
Expression
元素e4
,e5
和e6
将被选中,因为它们都具有非空字符串值。
答案 2 :(得分:0)
//*
选择XML文档中任何位置的任何元素
/Expression[.!='']
然后从该元素中获取具有非空值的所有直接子 <Expression>
元素。