我想在HTML文件中搜索某个字符串,然后提取标签。给出:
<div_outer><div_inner>Happy birthday<div><div>
我想在HTML中搜索“生日快乐”,然后让函数返回某种标记结构:这是最里面的标记,这是该标记之外的标记等等。所以,<div_inner></div>
然后<div_outer></div>
。
有什么想法吗?我在想HTMLAgilityPack,但我无法弄清楚如何去做。
一如既往地谢谢你们。
答案 0 :(得分:2)
HAP确实是一个很好的地方。
您可以使用OuterHtml
的{{1}}和Parent
属性来获取封闭元素和标记。
答案 1 :(得分:1)
你可以使用xpath。我使用//*[text()='Happy birthday'][1]/ancestor-or-self::*
表达式找到第一个(为简单起见)节点,其中文本内容为Happy birthday
,然后返回此节点的所有祖先(父节点,祖父节点等)和节点本身:< / p>
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
。