XPath特定问题,选择给定另一个孩​​子的值的孩子

时间:2010-08-25 20:17:43

标签: xpath

我需要检索所有这些类型的节点: <parameter value="thisisthename" name="parameters" /> 哪里 type = MyTest 其中一个孩子<parameter value="c:\temp\svn.exe" name="file" />等于c:\temp\svn.exe

现在我有

ert[type='MyTest']/parameters/parameter[@value='c:\temp\svn.exe']

  <ert agents="0031">
  <type>MyTest</type> 
  <parameters>
  <parameter value="c:\temp\svn.exe" name="file" /> 
  <parameter value="thisisthename" name="parameters" /> 
  <parameter value="200" name="count" /> 
  </parameters>
  </ert>

3 个答案:

答案 0 :(得分:1)

你快到了。这是您正在寻找的XPath表达式:

/ert[type='MyTest']/parameters/parameter[@value='c:\temp\svn.exe']/../parameter[@value='thisisthename']

您的想法是可以使用/..向上移动xml树。

如果你碰巧知道c:\temp\svn.exe总是在你想要的parameter节点之前的某个地方,你也可以使用:

/ert[type='MyTest']/parameters/parameter[@value='c:\temp\svn.exe']/following-sibling::parameter[@value='thisisthename']

这可能会快一点,因为不会发生回溯。

答案 1 :(得分:0)

每当我遇到XPath问题时,我都会回到这个网站...希望它可以帮到你。

http://www.w3schools.com/XPath/xpath_syntax.asp

答案 2 :(得分:0)

  

我需要检索所有这些类型   节点:<parameter value="thisisthename" name="parameters" />其中type = MyTest和其中一个<parameter value="c:\temp\svn.exe" name="file" />   等于c:\temp\svn.exe

所有这些三个条件,在Xpath中:

/ert[type='MyTest']
    [parameters/parameter[@value='c:\temp\svn.exe']]
    /parameters/parameter[@value][@name]

这意味着:来自ert根元素,其中type子元素具有“MyTest”字符串值,parameters/parameter孙子元素value属性等于“{ c:\ temp \ svn.exe“,我希望所有parameters/parameter个祖父都拥有valuename属性。