2010-08-25 72 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屬性。