需要解释XPath语法

时间:2015-03-20 11:51:08

标签: xml xpath msxml

任何人都可以解释下面写的XPath语法:

xmlDoc.documentElement.selectNodes("//*/Expression[.!='']")

基本上,我需要澄清上述语法的参数路径。

3 个答案:

答案 0 :(得分:4)

选择所有<Expression>元素:

  1. 不是根元素
  2. 并且具有非空值
  3. //*/ - 这意味着除了

    之外的任何东西

    Expression - 元素名称

    [.!=''] - 这意味着当前节点值不为空,即当前节点.不是!=''

答案 1 :(得分:2)

//*选择所有元素。

//*/Expression选择所有Expression 元素。

//*/Expression[.!='']选择非空 string-values 的所有Expression子元素。

XML Path Language (XPath)

  

元素节点的字符串值是的串联   字符串 - 元素节点的所有文本节点后代的值   文件订单。

注意:这 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元素e4e5e6 将被选中,因为它们都具有非空字符串值。

答案 2 :(得分:0)

//*

选择XML文档中任何位置的任何元素

/Expression[.!='']

然后从该元素中获取具有非空值的所有直接子 <Expression>元素。