我想在 HTML 文件中搜索某个字符串,然后提取标签。鉴于:
<div_outer><div_inner>Happy birthday<div><div>
我想在 HTML 中搜索“生日快乐”,然后有一个函数返回某种标签结构:这是最里面的标签,这是那个标签之外的标签,等等。所以,<div_inner></div>
然后<div_outer></div>
。
有任何想法吗?我正在考虑 HTMLAgilityPack,但我无法弄清楚如何去做。
一如既往地感谢,伙计们。
我想在 HTML 文件中搜索某个字符串,然后提取标签。鉴于:
<div_outer><div_inner>Happy birthday<div><div>
我想在 HTML 中搜索“生日快乐”,然后有一个函数返回某种标签结构:这是最里面的标签,这是那个标签之外的标签,等等。所以,<div_inner></div>
然后<div_outer></div>
。
有任何想法吗?我正在考虑 HTMLAgilityPack,但我无法弄清楚如何去做。
一如既往地感谢,伙计们。
HAP 确实是一个很好的地方。
您可以使用 a 的OuterHtml
andParent
属性Node
来获取封闭元素和标记。
您可以为此使用 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
。