obtenir tous les identifiants de div sur une page html en utilisant html Agility Pack

c# html-agility-pack

Question

Comment puis-je obtenir tous les identifiants divs sur une page HTML à l'aide de HTML Agility Pack. J'essaie d'obtenir tous les identifiants et de les mettre dans une collection.

<p>
    <div class='myclass1'>
        <div id='f'>
        </div>  
        <div id="myclass2">
            <div id="my"><div id="h"></div><div id="b"></div></div>
        </div>
    </div>
</p>

Code:

<p>
    <div class='myclass1'>
        <div id='f'>
        </div>  
        <div id="myclass2">
            <div id="my"><div id="h"></div><div id="b"></div></div>
        </div>
    </div>
</p>

Comment obtenir la collection de tous les identifiants divs?

Réponse acceptée

Si vous souhaitez simplement l'ID, vous pouvez obtenir une collection de ces nœuds d'attribut id au lieu d'obtenir une collection des nœuds d'élément div . Par exemple:

List<string> ids = new List<string>();
foreach(XmlNode node in doc.SelectNodes("//div/@id"))
{
    ids.Add(node.InnerText);
}

Cela ignorera les éléments div qui n'ont pas d'identifiant, tel que l'élément <div class='myclass1'> dans votre exemple.

"//div/@id" est une chaîne XPath. XPath est une technologie qu'il est très utile d'apprendre si vous traitez beaucoup avec XML, ou dans ce cas, HTML via la bibliothèque d'agility. XPath est une norme industrielle qui vous permet de sélectionner des nœuds correspondants dans un document XML.

  • // signifie que vous voulez qu'il sélectionne le nœud suivant en tant qu'enfant du nœud actuel ou de l'un de ses descendants. Comme le nœud actuel est le nœud racine du document, il trouvera les nœuds correspondants n'importe où dans le document.
  • div est un nom d'élément que nous voulons associer. Donc, dans ce cas, nous lui disons de trouver tous les éléments div n'importe où dans le document.
  • / indique que vous voulez un noeud enfant. Dans ce cas, l'attribut id est un enfant de l'élément div . Nous disons donc d'abord que nous voulons l'élément div . Nous avons ensuite besoin de la barre oblique pour indiquer que nous voulons l'un des nœuds enfants de l'élément div .
  • @id signifie que nous voulons trouver tous les attributs id . Le symbole @ indique qu'il s'agit d'un nom d'attribut au lieu d'un nom d'élément.

Réponse populaire

Vous pouvez obtenir la collection de div en passant la syntaxe xpath

Comme ça

HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument();

    htmlDoc.OptionFixNestedTags=true;

    htmlDoc.Load(filePath);

 foreach(HtmlNode div doc.DocumentElement.SelectNodes("//div"))
 {
///.. code here
 }



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