我需要检索所有这些类型的节点:
<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>
答案 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问题时,我都会回到这个网站...希望它可以帮到你。
答案 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
个祖父都拥有value
和name
属性。