仅获取父节点的子节点

时间:2019-08-29 06:40:24

标签: c# html-agility-pack

我尝试使用html敏捷包。基本工作正常,只有当我尝试获取零件的子节点时,然后我才不会获得所有与此类“经销商-提供者”相等的节点,

这是我使用的代码:

private void getListOfDiv(string html, string classname)
    {

        if (html != null)
        {

            var doc = new HtmlAgilityPack.HtmlDocument();
            doc.LoadHtml(html);

            var divProduktkategorie = doc.DocumentNode.SelectSingleNode("//div[@class='" + classname + "']");

            //this.txtHtmlCode.Text = divProduktkategorie.InnerHtml;
            //return;
            int i = 1;

            foreach( var divAngebote in divProduktkategorie.SelectNodes("//div[@class='dealer-offer']"))
            {
                this.listBox1.Items.Add(i + ": " + classname);
                this.txtHtmlCode.AppendText(divAngebote.OuterHtml);
                i++;
            }
        }
    }

我将divProduktkategorie返回到outputfild,然后只得到3个位置,该位置在此单节点下,但是我开始循环,然后得到每个具有'dealer-offer'类的节点,而不仅仅是3个职位。

我的错在哪里?我自己找不到。

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

尝试获取具有正确相对路径的3个节点,然后仅对它们进行foreach。不要在divProduktkategorie参考文献中搜索它们。

private void getListOfDiv(string html, string classname)
{

    if (html != null)
    {

        var doc = new HtmlAgilityPack.HtmlDocument();
        doc.LoadHtml(html);

        var divProduktkategorie = doc.DocumentNode.SelectSingleNode("//div[@class='" + classname + "']//div[@class='dealer-offer']");

        //this.txtHtmlCode.Text = divProduktkategorie.InnerHtml;
        //return;
        int i = 1;

        foreach( var divAngebote in divProduktkategorie)
        {
            this.listBox1.Items.Add(i + ": " + classname);
            this.txtHtmlCode.AppendText(divAngebote.OuterHtml);
            i++;
        }
    }
}