Question

En utilisant le HTML Agility Pack est idéal pour obtenir des descendants et des tables entières etc ... mais comment pouvez-vous l'utiliser dans le cas ci-dessous

...Html Code above...

<dl>
<dt>Location:</dt>
<dd>City, London</dd>
<dt style="padding-bottom:10px;">Distance:</dt>
<dd style="padding-bottom:10px;">0 miles</dd>
<dt>Date Issued:</dt>
<dd>26/10/2010</dd>
<dt>type:</dt>
<dd>cement</dd>
</dl>

...HTML Code below....

Comment pouvez-vous trouver si miles était moins de 15 dans ce cas, j'undestand que vous pourriez faire quelque chose avec des éléments, mais Devrez-vous obtenir tous les éléments trouver la bonne puis trouver le numéro juste pour vérifier sa valeur? Ou est il y a moyen d'utiliser regex avec agilité emballez pour atteindre cet objectif d'une meilleure façon ...

Était-ce utile?

La solution

Je suis assez sûr (ai pas vérifié) qu'il supporte l'axe following-sibling::, vous pouvez donc soit trouver le nœud "dt[.='Distance:']" puis trouver node.SelectSingleNode("following-sibling::dd[1]") - ou (simple) juste utilisation node.NextSibling si vous sont sûrs que le dd toujours suit immédiatement la dt.

Par exemple:

string distance = doc.DocumentNode.SelectSingleNode(
          "//dt[.='Distance:']/following-sibling::dd").InnerText;

Autres conseils

Get just html simblings



public static List<HtmlNode> GetHtmlNodeList(string html)
    {
        HtmlDocument doc = new HtmlDocument();
        doc.LoadHtml(html);
        var regs = doc.DocumentNode.SelectSingleNode("//div");
        var first = regs.Descendants().FirstOrDefault();
        var second = first.NextSibling;
        List<HtmlNode> list = new List<HtmlNode>();
        while (second != null)
        {
            list.Add(second);
            second = CheckSibling(second);
        }
        return list;
    }
    private static HtmlNode CheckSibling(HtmlNode node)
    {
        node = node.NextSibling;
        return node;          
    }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top