Pregunta

Uso del paquete de agilidad HTML es ideal para obtener descendientes y las tablas enteras, etc ... pero ¿cómo puede usarlo en el siguiente situación

...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....

¿Cómo podría encontrar si milla fue de menos de 15 en este caso, yo undestand se podría hacer algo con los elementos, pero me tienes que conseguir todos los elementos de encontrar la correcta y luego encontrar el número sólo para comprobar su valor? O es que hay manera de utilización de expresiones regulares con agilidad empacar para lograr esto de una manera mejor ...

¿Fue útil?

Solución

Estoy bastante seguro (no se han comprobado) que soporta el eje following-sibling::, por lo que podría o bien "dt[.='Distance:']" encontrar el nodo y luego encontrar node.SelectSingleNode("following-sibling::dd[1]") - o (simple) solo uso node.NextSibling si está seguro de que el dd sigue siempre de manera inmediata la dt.

Por ejemplo:

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

Otros consejos

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;          
    }
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top