4

我最近刚开始使用 XPath 并遇到了问题。这是我要从中提取的代码:

 <h3>Some Company</h3>
    Mainstreet 1234
 <br>
    98776, Country
 <br>

如何提取结束 h3 和 br 标记之间的内容?

4

3 回答 3

2

这可以工作h3/following-sibling::node()[not(preceding-sibling::br) and not(self::br)](为我返回“Mainstreet 1234”)。

但我担心您真正的 xml 和实际需求比提供的示例更复杂,因此您可能需要进一步调整它以满足您的要求。

于 2013-08-13T11:40:42.200 回答
2

如果您的代码在下面的块中:

<par>
    <h3>Some Company</h3>
    Mainstreet 1234
    <br>
    98776, Country
    </br>
</par>

您需要告诉 XPath 在 h3 节点之后和 br 节点之前的每个 par 节点内为您提供文本。在 XPath 术语中,这转换为:

//par/text()[preceding::*[name()='h3'] and following::*[name()='br']]

以上将在文档中的任何地方搜索 par 节点。您还可以更具体地了解 h3 和/或 br 节点的内容:

//par/text()[preceding::*[name()='h3' and text()='Some Company'] and following::*[name()='br']]

如果以上方法不能解决您的问题,请告诉我。

于 2013-08-13T11:45:25.830 回答
2

尝试//h3/following-sibling::text()[following::br]

于 2018-11-20T12:28:41.550 回答