Специфический вопрос XPath, Выбор ребенка с учетом значения другого ребенка - PullRequest
1 голос
/ 26 августа 2010

Мне нужно получить все эти типы узлов: <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 ]

1 голос
/ 26 августа 2010

Вы почти у цели. Это выражение 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 голосов
/ 26 августа 2010

Мне нужно получить все эти типы узлов: <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.

0 голосов
/ 26 августа 2010

Я возвращаюсь на этот сайт, когда у меня возникают вопросы по XPath ... надеюсь, это поможет вам.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...