2010-08-25 3 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

ahh! здорово! не знал, что спасибо – user391986

+0

Если это ответ, который вы искали, можете ли вы пометить его как ответ? –

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, имеющий дочерний элемент с строковым значением «MyTest» и parameters/parameter внук с атрибутом value, равным «c: \ temp \ svn.exe», я хочу, чтобы все parameters/parameter grandchidren имели value и name атрибутов.

Смежные вопросы