comment obtenir un nœud childs avec 'html agility pack'

c# html-agility-pack

Question

comment obtenir le noeud childs avec 'html agility pack'?

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

Je dois juste prendre noeud interne dans <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>

mettre à jour :

J'ai écrit le code suivant, mais c'est faux.

var nodes = elementbyId.Descendants();

ce code Obtient tous les éléments à l'intérieur de <div id="nome">

Y a-t-il un moyen de résoudre le problème? Je n'ai aucune idée

Réponse acceptée

Utilisez SelectNodes("*") au lieu de Descendants() pour obtenir des éléments enfants directs de l'élément en cours. Voici un exemple de travail:

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("-----------------------");
}

Démo Dotnetfiddle

sortie:

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


Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi