使用 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,但我一直无法弄清楚如何做到这一点。
一如既往地感谢,伙计们。
HAP确实是一个好地方。
可以使用Node
的OuterHtml
和Parent
属性来获取封闭元素和标记。
你可以使用 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_inner
和 div_outer
。