4

使用 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,我不明白你可以对元素做一些事情,但你是否必须让所有元素找到正确的元素,然后找到数字只是为了检查它的值?或者有没有办法使用正则表达式和敏捷包来以更好的方式实现这一点......

4

2 回答 2

4

我很确定(还没有检查)它支持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;
于 2010-10-27T09:44:25.573 回答
0

只获取 html 兄弟姐妹

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;          
}
于 2019-04-04T09:02:49.077 回答