c# - 如何使用 'html agility pack' 获取子节点

标签 c# html-agility-pack

如何使用“html agility pack”获取子节点?

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">里面的所有元素

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

最佳答案

使用 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>
-----------------------

关于c# - 如何使用 'html agility pack' 获取子节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31263152/

相关文章:

c# - MySqlBulkLoader 未导入第一列

c# - 解析文件中的Net Core Catch语句和其他业务逻辑

c# - 如何将新行添加到datagridview?

c# - 将文本附加到右侧而不是换行

c# - "Cannot modify the return value"修改List<T>内容时出错

c# - Winforms:从不同的类调用输入表单函数

c# - InnerHTML 中的 HTMLAgilityPack 解析

c# - HTML Agility Pack 是否可以留下未封闭的标签?

c# - 如何从xPath中删除<a>元素?

xpath - 使用 HTML Agility Pack 解析图像 src