2010-08-25 78 views
1

我需要检索所有这些类型的节点: <parameter value="thisisthename" name="parameters" /> 其中 type = MyTest 和孩子一个<parameter value="c:\temp\svn.exe" name="file" />等于c:\temp\svn.exeXPath的具体问题,选择另一个孩子的孩子给定值

现在我有

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> 

回答

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'] 

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

+0

啊!真棒!不知道 谢谢 – user391986 2010-08-25 21:11:36

+0

如果这是你正在寻找的答案,你可以标记为答案? – 2010-08-25 21:17:20

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 grandchidren具有valuename属性。