如何获得一个特定的节点值与xpath时id是在元素而不是属性?

问题描述:

随着XPath的/levels/level[@id="3"]/value我可以得到电平值其中id = 3这样的:如何获得一个特定的节点值与xpath时id是在元素而不是属性?

<levels> 
    <level id="2"> 
      <value>25</value> 
    </level> 
    <level id="3"> 
      <value>33</value> 
    </level> 
    <level id="4"> 
      <value>44</value> 
    </level> 
</levels> 

但我读XML没有属性的格式如下:

<levels> 
    <level> 
      <id>2</id> 
      <value>25</value> 
    </level> 
    <level> 
      <id>3</id> 
      <value>33</value> 
    </level> 
    <level> 
      <id>4</id> 
      <value>44</value> 
    </level> 
</levels> 

是什么第二个XML块的等价xpath将获得id = 3的级别值?(它不保证该ID = 3将始终是第二节点。)

+0

你的XML是无效的。它包含一个额外的未关闭元素 – Garett 2013-04-25 11:50:21

+0

感谢,固定为清楚的缘故:-) – 2013-04-25 13:28:40

如何执行以下操作:

/levels/level[id/text() = "3"]/value 

/levels/level[id/. = "3"]/value 
+0

我的第二个工作,感谢 – 2013-04-25 13:29:01

简单/短

/*/*[id = 3]/value 
+0

+1尼斯较短的例子@Dimitre。我仍然喜欢使用显式路径语法,但这只是我的偏好。 – Garett 2013-04-25 16:02:24

+0

@Garett,不客气。完整路径的位置步骤适合教育目的。使用上面的缩写语法不仅仅是“另一种语法” - 它的评估效率稍高一些(因为元素名称未经过验证)。 – 2013-04-25 17:25:35