如何从Html属性获取数据

时间:2014-02-22 14:47:07

标签: c# html-agility-pack

我正在使用C#,Xaml和HTMLAgilityPack。如何获得属性“alt”的值。

HTML code:

<img src="http://userserve-ak.last.fm/serve/252/87168773.png" alt="Idina Menzel - Let It Go lyrics"         title="Let It Go"/>

我如何获得“Idina Menzel - Let It Go lyrics”。

C#代码:

var s = doc.DocumentNode.Descendants("img").Where(o => o.Attributes["alt"] != null &&  o.Attributes["alt"].Value != null);

try
{
     foreach (HtmlNode childNode in s)
     {
          pureText.Append(c + ". ");
          pureText.Append(childNode);
          pureText.Append("\n\n");
          c++;
      }
}
catch
{ }

1 个答案:

答案 0 :(得分:0)

您可以在XPath中使用[@alt]来选择已定义img属性的所有alt个节点:

var images = doc.DocumentNode.SelectNodes("//img[@alt]");
foreach (var img in images)
{
    // img.Attributes["alt"].Value
} 

连接有序列表中的所有alt消息:

images.Select((img,index) => new { index, alt = img.Attributes["alt"].Value })
      .Aggregate(new StringBuilder(),
                 (sb,x) => sb.AppendFormat("{0}. {1}\n\n", x.index + 1, x.alt),
                 sb => sb.ToString());