【问题标题】:HTML Agility Pack: How to access HTML attributes?HTML 敏捷包:如何访问 HTML 属性?
【发布时间】:2014-07-11 15:28:06
【问题描述】:

我有以下 html 代码:

<tr>
    <td headers="header1"><b><a href="www.site.com">TITLE </a></b></td>
    <td headers="header2"></td>
    <td headers="header3" class="centrato">23/04/2014</td>
</tr> 

我需要存储在数据表中:

HREF VALUE in "Link" column;
TITLE in "Title" column;
23/04/2014 in "Date" column;

我试过这个:

int i = 0;
foreach (HtmlNode node in tmlDoc.DocumentNode.SelectNodes("//td[@headers='header1']"))
{
  table.Rows.Add();
  table.Rows[i]["Post"] = node.InnerText;
  i++;
 }

此代码允许我在数据表中添加所有标题,但我无法添加 DATE 和 HREF,您能帮帮我吗?

【问题讨论】:

  • Html Agility Pack and problems 是一个糟糕的标题。您应该尝试在标题中抓住问题的本质。如How to access HTML attributes with the HTML Agility Pack?

标签: c# html parsing html-agility-pack


【解决方案1】:

你可以这样做:

//select all `<tr>` that contains specific `<td>`
foreach (HtmlNode node in tmlDoc.DocumentNode.SelectNodes("//tr[td[@headers='header1']]"))
{
    table.Rows.Add();
    //get <td headers='header1'> in current <tr>
    var header1 = node.SelectSingleNode("./td[@headers='header1']");

    table.Rows[i]["Title"] = header1.InnerText;
    //get <a> in header1 then get it's href attribute value
    table.Rows[i]["Link"] = header1.SelectSingleNode(".//a").GetAttributeValue("href", "");
    //get innerText of <td headers='header1'> in current <tr>
    table.Rows[i]["Post"] = node.SelectSingleNode("./td[@headers='header3']").InnerText;
    i++;
}

【讨论】:

    【解决方案2】:

    InnerText 只是给你标签之间的文本。要访问HrefId 或...你应该使用GetAttributeValue 方法。

    int i = 0;
    foreach (HtmlNode node in tmlDoc.DocumentNode.SelectNodes("//tr"))
    {
        table.Rows.Add();
        table.Rows[i]["Link"] = node.SelectSingleNode("//a").GetAttributeValue("href", "");
        table.Rows[i]["Title"] = node.SelectSingleNode("//a").InnerText;
        table.Rows[i]["Date"] = node.SelectSingleNode("//td[@headers='header3']").InnerText;
        i++;
    }
    

    【讨论】:

    • 1. HtmlNode 没有 DocumentNode。 2.您需要在SelectSingleNode()s参数的开头添加单点:sample case for reference
    猜你喜欢
    • 2015-10-19
    • 2011-01-26
    • 1970-01-01
    • 2016-06-01
    • 2017-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多