Выберите конкретное c xpath положение в таком xml - PullRequest
0 голосов
/ 03 марта 2020

У меня есть такой код:

<List>
    <Header>
        <HeaderItem>ID</HeaderItem>
        <HeaderItem>Number</HeaderItem>
        <HeaderItem>State</HeaderItem>
        <HeaderItem>Name</HeaderItem>
    </Header>
    <ListItem>
        <Text>12345</Text>
        <Text>1</Text>
        <Text>1</Text>
        <Text>Ex1</Text>
    </ListItem>
    <ListItem>
        <Text>67890</Text>
        <Text>2</Text>
        <Text>1</Text>
        <Text>Ex2</Text>
    </ListItem>
</List>

И я хочу получить «1» в заголовке State. У меня есть такой XPATH:

//List[1][Header/HeaderItem[@Name="State"]]/ListItem[1]/Text[@Name = "1"]

Но он выбирает оба "1" (в поле Number и State). Как получить это под государством?

1 Ответ

0 голосов
/ 03 марта 2020

Это вернет вам значения в столбце «Состояние»:

//ListItem/Text[position()=count(/List/Header/HeaderItem[text()='State']/preceding-sibling::*)+1]

Если вам нужна только самая верхняя строка, то:

//ListItem[1]/Text[position()=count(/List/Header/HeaderItem[text()='State']/preceding-sibling::*)+1]

PS - count(/List/Header/HeaderItem[text()='State']/preceding-sibling::*)+1 - это подход к получению позиции элемента, взятый из этого ответа . Так что стоит проголосовать, если вам это нравится.

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