0

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

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

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

有任何想法吗?我正在考虑 HTMLAgilityPack,但我无法弄清楚如何去做。

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

4

2 回答 2

2

HAP 确实是一个很好的地方。

您可以使用 a 的OuterHtmlandParent属性Node来获取封闭元素和标记。

于 2012-04-04T19:46:27.067 回答
1

您可以为此使用 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

于 2012-04-04T21:52:18.110 回答