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

xpath可以从一个元素选择到不同类型的元素吗?,xpath,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="grab

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>

不要获取此数据。
好东西
更多好东西


选择这两个元素的一种方法是,选择div的子元素,该子元素的@id等于“wrapper”,并且其下面的兄弟元素是@id等于“endHere”的p元素:


更一般的方法是,您可以尝试使用后面的同级和前面的同级来按id属性选择一系列元素

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

上面的示例演示如何选择
的所有子元素,从具有
id=“grabThis”
的元素开始,到包含
id=“endHere”
的元素。如果您希望它以独占方式选择(排除限制元素),只需删除
或@id='…'
部分。

您需要选择什么?是否要选择整个节点或属性和元素中的文本?请提供上述html的示例输出。根据使用数据的方式,使用单独的表达式提取多个小段可能更简单。例如
//div[3]/@id
将为您提供
grabThis
,而
//div[3]
将为您提供完整的
节点。“你们可以把所有东西连在一个字符串中。”赫尔德达罗查发现OP已经给出了隐式示例。似乎他想要从
的元素。谢谢你,har07,非常感谢!
/body/div[@id='wrapper']/*
        [
            (preceding-sibling::*[@id='grabThis'] or @id='grabThis')
                and
            (following-sibling::*[@id='endHere'] or @id='endHere')
        ]