0

我需要列出特定网页中的记录。我在文本文件中获得了页面源。我需要逐个元素地遍历这个节点:

HtmlNodeCollection resultContainer = doc.DocumentNode.SelectNodes("//div[@class='result-list divider-y-5']");

对于每个元素,我需要检查类型(div、span 等),它是“id”和“class”属性,以便能够制作我的记录列表。我不想要所有 s 或 s 的集合。这无济于事,因为我不知道在循环遍历它们时将面临哪种类型的元素。我必须全部检查。因为我需要的所有数据都是上面提到的节点集合的子节点。有什么建议么?

4

2 回答 2

1
foreach(HtmlNode node in resultContainer)
{
    //check node type
    switch(node.Name)
    {
        case "div":
        {
            break;
        }   
        case "p":
        {
        }
        ///....etc
    }

    //get id
    String id = node.Attributes["id"].Value;

    //get class
    String class = node.Attributes["class"].Value;

}
于 2012-11-09T10:18:10.867 回答
0

我认为让 HtmlAgilityPack 将 html 文档转换为 xml 更容易,例如:

doc.Load(htmlStream, true);
doc.OptionOutputAsXml = true;
doc.OptionFixNestedTags = true;
doc.OptionAutoCloseOnEnd = true;
doc.Save(/* your Xml stream or filename */);

然后使用常规的 .NET xml api(例如使用 XmlDocument 或 XDocument)来处理内容。

于 2012-11-09T10:20:40.493 回答