如何在HtmlAgilityPack中逐个元素地获取

时间:2014-04-13 08:19:11

标签: c# asp.net html-agility-pack

您好我制作HttpWebResponse并获取HtmlPage以及我需要的所有数据,例如带有日期信息的表,我需要将它们保存到数组列表并将其保存到xml文件

html页面的示例

<table>
<tr>
<td class="padding5 sorting_1">
<span class="DateHover">01.03.14</span>
</td>
<td class="padding5 sorting_1">
<span class="DateHover" >10.03.14</span>
</td>
</tr>
</table>

我使用HtmlAgilityPack无效的代码

 private static string GetDataByIClass(string HtmlIn, string ClassToGet)
    {
        HtmlAgilityPack.HtmlDocument DocToParse = new HtmlAgilityPack.HtmlDocument();
        DocToParse.LoadHtml(HtmlIn);
        HtmlAgilityPack.HtmlNode InputNode = DocToParse.GetElementbyId(ClassToGet);//here is the problem i dont have method DocToParse.GetElementbyClass
        if (InputNode != null)
        {
            if (InputNode.Attributes["value"].Value != null)
            {
                return InputNode.Attributes["value"].Value;
            }
        }

        return null;
    }

母猪我需要读取此数据以获取日期01.03.14和10.02.14,以便能够将其保存到数组列表(然后再保存到xml文件)

播下任何想法我怎么能得到这个日期(01.03.14和10.02.14)?

1 个答案:

答案 0 :(得分:7)

Html Agility Pack支持XPATH,因此您可以执行以下操作:

foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//span[@class='" + ClassToGet + "']"))
{
    string value = node.InnerText;
    // etc...
}

这意味着:从文档顶部(第一个/)获取具有给定CLASS属性的递归(第二个/)的所有SPAN元素。然后为每个元素获取内部文本。