XPath:基于两个XPath路径提取元素之间的文本

HTML如下所示

    <div>
        <div>
            <span>
                <p>sample-text here p1 </p>
                <p>sample-text here p2</p>
                <p>sample-text here p3</p>
            </span>
        </div>
        <div>
            <p>
                <span>
                    <p>sample-text here p4</p>
                </span>
            </p>
        </div>
        <div>
            <p>
                <div>
                    <span>
                        <p>sample-text here p5</p>
                        <p>sample-text here p6</p>
                        <p>sample-text here p7</p>
                        <p>sample-text here p8</p>
                        <p>sample-text here p9</p>
                    </span>
                </div>
            </p>
        </div>
    </div>

我有两个如下的XPath路径

/div[1]/div[1]/span[1]/p[3]/text()

AND

/div[1]/div[3]/p[1]/div[1]/span[1]/p[3]/text()

第一个获得“ 示例文本在这里p3 ”,第二个获得“ 示例文本在这里p7

现在,我的目标是实际获取这两个路径之间的所有元素的文本(包括这两个元素)

/div[1]/div[1]/span[1]/p[3] AND /div[1]/div[3]/p[1]/div[1]/span[1]/p[3]

预期结果将是 此处示例文本p3此处示例文本p4此处示例文本p5此处示例文本p6此处示例文本p7

我研究了XPath轴和运算符,但不确定,如何将它们用于此上下文。任何帮助表示赞赏。谢谢

编辑: 我编辑了这个问题,包括示例HTML,以涵盖所有div上稍有不同的结构。目的是能够使用这些XPath,而不要依赖于文档的结构,谢谢

xzxlaoqi 回答:XPath:基于两个XPath路径提取元素之间的文本

您在这里不需要axes,只需使用position()

(*//span/p)[position() >= 3 and position() <= 7]

根据样本xpath使用完整的xml

(/div/div/span/p)[position() >= 3 and position() <= 7]
本文链接:https://www.f2er.com/3155354.html

大家都在问