xpath可以从一个元素中选择一个不同类型的元素吗?

时间:2014-04-22 01:09:00

标签: xpath

xpath是全新的,所以也许只是不知道要正确搜索的术语。

我想从具有特定ID的div的开头抓到具有特定id的段落的末尾。请注意,我只想选择div的一部分。

<body>
<div id="meaninglessPreamble">Do not get this data.</div>
<div id="wrapper">
<div id="grabThis">good stuff</div>
<p id="grabThisToo">more good stuff</p>
<p id="endHere"/>
<p id="leaveMeOutOfThis">Unwanted Junk</p>
</div>
</body>

2 个答案:

答案 0 :(得分:2)

更一般的方法,你可以尝试使用follow-sibling和previous-sibling来按id属性选择一系列元素。

/body/div[@id='wrapper']/*
        [
            (preceding-sibling::*[@id='grabThis'] or @id='grabThis')
                and
            (following-sibling::*[@id='endHere'] or @id='endHere')
        ]

上面的示例演示了选择<div id="wrapper">的所有子元素,从包含id="grabThis"的元素到包含id="endHere"的元素。如果您希望它专门选择(排除限制元素),只需删除or @id='...'部分。

答案 1 :(得分:0)

选择这两个元素的一种方法是,选择div的子节点@id等于&#34;包装器&#34;和他们的跟随兄弟是一个p元素,其@id等于&#34; endHere&#34;:

/body/div[@id='wrapper']/*[following-sibling::p[@id='endHere']]