使用 C# 获取 HTML 文档中文本周围的标记

本文关键字:周围 文本 中文 获取 HTML 文档 使用 | 更新日期: 2023-09-27 18:30:14

我想在HTML文件中搜索某个字符串,然后提取标签。 鉴于:

<div_outer><div_inner>Happy birthday<div><div>

我想在 HTML 中搜索"生日快乐",然后让一个函数返回某种标签结构:这是最里面的标签,这是那个标签外面的标签,等等。 所以,<div_inner></div>然后<div_outer></div>.

有什么想法吗? 我正在考虑HTMLAgilityPack,但我一直无法弄清楚如何做到这一点。

一如既往地感谢,伙计们。

使用 C# 获取 HTML 文档中文本周围的标记

HAP确实是一个好地方。

可以使用NodeOuterHtmlParent属性来获取封闭元素和标记。

你可以使用 xpath 来实现这一点。我使用//*[text()='Happy birthday'][1]/ancestor-or-self::*表达式,它找到一个Happy birthday文本内容的第一个(为简单起见)节点,然后返回该节点的所有祖先(父节点、祖父级等)和节点本身:

var doc = new HtmlDocument();
doc.LoadHtml("<div_outer><div_inner>Happy birthday<div><div>");
var ancestors = doc.DocumentNode
    .SelectNodes("//*[text()='Happy birthday'][1]/ancestor-or-self::*")
    .Reverse()
    .ToList();
似乎返回的节点的顺序

是文档中找到的节点的顺序,所以我使用Enumerable.Reverse方法来反转它。

这将返回 2 个节点:div_innerdiv_outer