Xpath 选择1)位于给定节点之前但2)也是另一个给定节点的后代的节点

Xpath 选择1)位于给定节点之前但2)也是另一个给定节点的后代的节点,xpath,Xpath,假设我有以下XML: <body> <div id="global-header"> header </div> <div class="a"> <h3>some title</h3> <p>text 1</p> <p>tex

假设我有以下XML:

<body>
    <div id="global-header">
        header
    </div>

    <div class="a">
        <h3>some title</h3>
        
        <p>text 1</p>
        
        <p>text 2</p>
        
        <p>text 3</p>
    </div>

</body>


不幸的是,这也会选择不需要的

您需要使用
前面的同级节点来选择属于同一父节点的子节点,而不是
前面的

.//p[text()="text 2"]/preceding-sibling::*

非常感谢。这回答了我的问题。但我有一个后续问题,为了遵守我创建的SO规则,请您回答好吗?
.//p[text()="text 2"]/preceding::*
.//p[text()="text 2"]/preceding-sibling::*