在这样的xml中选择特定的xpath位置

在这样的xml中选择特定的xpath位置,xpath,Xpath,我有这样的代码: <List> <Header> <HeaderItem>ID</HeaderItem> <HeaderItem>Number</HeaderItem> <HeaderItem>State</HeaderItem> <HeaderItem>Name</HeaderItem> <

我有这样的代码:

<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”(在数字和状态下)。如何在状态下获取该值?

这将返回“状态”列下的值:

如果您只需要最上面的一行,那么:

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

p.S.-
计数(/List/Header/HeaderItem[text()=“State']/前面的同级::*)+1
是从中获取元素位置的方法。如果你喜欢,那么值得投票。

不清楚你想要什么,请编辑你的问题。首先,尝试更改html中的所有文本编号,使它们都是唯一的。第二,解释你到底想要这些唯一的数字中的哪一个,以及基于什么标准(比如-它在第一个列表项中,或者其他任何东西)。@JackFleeting这是我应用程序列表中的一个例子。我正在寻找一个有效的XPATH来选择一个元素,即第一个ListItem节点中标题“State”下的数字“1”。我问题中的当前XPATH返回两个元素:“数字”下的“1”和“状态”下的“1”。@Noxe This
//List//ListItem/Text[3]/Text()
XPATH将返回
State
列下的所有列值。这正是我需要的。谢谢
//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]