XPath-запрос для известных атрибутов значений - PullRequest
2 голосов
/ 16 августа 2011

У меня есть этот XML:

<Header>
  <Reference>
    <Identifier>BatchProcessed</Identifier>
    <DateTime>2011-08-15T05:12:00+10:00</DateTime>
  </Reference>
</Header>
<Header>
  <Reference>
    <Identifier>Running</Identifier>
    <DateTime>2011-08-15T05:12:00+10:00</DateTime>
  </Reference>
</Header>

Я пытаюсь использовать запрос XPath, чтобы узнать это значение «BatchProcessed» в Идентификаторе.

Пожалуйста, поправьте меня. Вот что у меня в запросе, но оно не работает:

//Header[Identifier='BatchProcessed']

Ответы [ 3 ]

2 голосов
/ 16 августа 2011

Идентификатор находится внутри Reference, поэтому вам нужно добавить его в ваш XPath. Или

//Header[Reference/Identifier='BatchProcessed']

или

//Header[.//Identifier='BatchProcessed']
1 голос
/ 16 августа 2011

Попробуйте это:

//Header[contains(.//Identifier, 'BatchProcessed')]

Он гласит: «найдите элемент заголовка в любом месте ниже корня, у которого есть элемент-потомок под названием Identifier, содержащий« BatchProcessed »в его текстовом узле.

YouЯ должен быть немного осторожнее при использовании текста в элементе, так как пробелы иногда могут пропасть, особенно если вы начинаете добавлять туда комментарии. Вот почему я использовал «содержит», а не простое равенство - даже если равенство будет работатьдля вашего конкретного документа. На мой взгляд, лучше сделать идентификатор атрибутом, так как вы не можете бросать комментарии в атрибуты.

1 голос
/ 16 августа 2011

Я не проверял это, но ...

//Header/Reference/Identifier/text() == 'BatchProcessed'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...