如何使用&#h; html agility pack'来获取子节点。

时间:2015-07-07 08:11:23

标签: c# html-agility-pack

如何使用' html敏捷包获取子节点' ?

var Webget = new HtmlWeb();
var doc = Webget.Load(url);
HtmlNode elementbyId = doc.GetElementbyId("nome");

我只需要在<div id="nome">

中获取内部节点

html:

<div id="nome">
    <p> <!-- this node --> 
    <strong></strong>
    </p>
    <br/><!-- this node --> 
    <span><!-- this node --> 
    <strong></strong>
    </span>
    <p><!-- this node --> 
    <span></span>
    </p>
</div>

更新:

我编写了以下代码,但这是错误的。

var nodes = elementbyId.Descendants();

此代码获取<div id="nome">

中的所有元素

有没有办法解决这个问题?我不知道

1 个答案:

答案 0 :(得分:5)

使用SelectNodes("*")代替Descendants()来获取当前元素的直接子元素。这是一个有效的例子:

var html = @"<div id='nome'>
    <p> <!-- this node --> 
    <strong></strong>
    </p>
    <br/><!-- this node --> 
    <span><!-- this node --> 
    <strong></strong>
    </span>
    <p><!-- this node --> 
    <span></span>
    </p>
</div>";
var doc = new HtmlDocument();
doc.LoadHtml(html);
HtmlNode elementbyId = doc.GetElementbyId("nome");
var nodes = elementbyId.SelectNodes("*");
foreach (var htmlNode in nodes)
{
    Console.WriteLine(htmlNode.OuterHtml);
    Console.WriteLine("-----------------------");
}

<强> Dotnetfiddle Demo

输出

<p> <!-- this node -->
    <strong></strong>
    </p>
-----------------------
<br/>
-----------------------
<span><!-- this node -->
    <strong></strong>
    </span>
-----------------------
<p><!-- this node -->
    <span></span>
    </p>
-----------------------