Http Agility Pack - Доступ к братьям и сестрам? - PullRequest
3 голосов
/ 27 октября 2010

Использование HTML-пакета Agility Pack отлично подходит для получения потомков, целых таблиц и т. Д., Но как его использовать в следующей ситуации

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

Как вы могли бы найти Если бы миль было меньше 15 в этом случае, я понимаю, что вы могли бы что-то сделать с элементами, но вам нужно было бы заставить все элементы найти правильный, а затем найти число, чтобы просто проверить его значение? Или есть способ использовать регулярные выражения с пакетом Agility, чтобы добиться этого лучше ...

Ответы [ 2 ]

3 голосов
/ 27 октября 2010

Я почти уверен (не проверял), что он поддерживает ось following-sibling::, поэтому вы можете либо найти узел "dt[.='Distance:']", а затем найти node.SelectSingleNode("following-sibling::dd[1]") - или (проще)просто используйте node.NextSibling, если вы уверены, что dd всегда следует сразу за dt.

Например:

string distance = doc.DocumentNode.SelectSingleNode(
          "//dt[.='Distance:']/following-sibling::dd").InnerText;
0 голосов
/ 04 апреля 2019
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;          
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...