Атрибут и относительное положение в одном запросе Xpath? - PullRequest
1 голос
/ 02 августа 2020

Я пытаюсь настроить один запрос Xpath, который ищет не только узлы с заданным атрибутом c, но и их относительное положение, а не его фактическое положение в XML.

В качестве примера:

<room>
<child gender="female">
<name>Anne</name>
</child>

<child gender="female">
<name>Mary</name>
</child>

<child gender="male">
<name>John</name>
</child>

<child gender="male">
<name>David</name>
</child>
</room>

И я хочу указать, какой пол и относительное положение ребенка. Так что в моем случае я хочу, чтобы в документе был второй мужчина.

/room/child[@gender="male] просто дает мне всех мужчин, где /room/child[position()=2] приведет к тому, что Мэри будет вытащена.

Я уже пришел с решением, предоставляя каждому друг другу атрибут идентификатора в зависимости от их положения и может запрашивать его с помощью простого AND /room/child[@gender="male" and @ID="2", но это потребует много работы с моей стороны, чтобы go вернулся во все мои документы и добавить этот второй атрибут вместо того, чтобы просто использовать один упрощенный Xpath, если это возможно. Я также понимаю, что могу запросить самцов, а затем запросить позицию результата, но опять же, я бы предпочел, если возможно, просто сохранить его в виде одного запроса.

1 Ответ

1 голос
/ 02 августа 2020

Вероятно, вы ищете: //child[@gender='male'][2]

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