2011-07-10 172 views
0

我想开发我的第一个RSS新闻聚合器。我可以轻松从RSSItem对象中提取链接,标题和发布日期。但是,我很难从提要项目中提取图像。不幸的是,由于我的声誉很低,所以我无法上传图片,所以不是帮助我提取出<img>的src属性值,而是告诉我如何获取<a>标签的href属性值。高度appreaciated!如何提取html标签属性?

这里的字符串

<div style="text-align: center;" 
    <a href="http://www.engadget.com/2011/07/10/element5s-mini-l-solarbag-brings-eco-friendly-energy-protectio/"></a> 
</div> 

编辑:

也许整个标题是错误的。有没有一种方法可以找到使用XPath的值?

+0

and where is your string?我想这应该是“这是字符串”部分 – grapkulec

+0

这看起来不像RSS。你在哪里得到它? –

+0

约翰,这只是一个随机的HTML。我没有足够的声誉来嵌入图像和链接,所以:) – Dragan

回答

2

使用HTMLAgilityPack作为回答这个帖子:

How can I get values from Html Tags?

的更多信息:

HTML可能不能很好地形成,因此,我们需要另一种解析器(除.NET提供XML一个)这是更容错的。这就是HTMLAgilityPack进来

入门:

  1. 创建一个新的控制台应用程序

  2. 右键单击引用/管理的NuGet包(安装的NuGet如果你没有它)。

  3. 添加HTML敏捷

工作的示例:

 using System; 
     using System.IO; 
     using System.Text; 
     using HtmlAgilityPack; 

     namespace ConsoleApplication4 
     { 
      class Program 
      { 
       private const string html = 
     @"<?xml version=""1.0"" encoding=""ISO-8859-1""?> 
     <div class='linkProduct' id='link' anattribute='abc'/> 
     <bookstore> 
     <book> 
      <title lang=""eng"">Harry Potter</title> 
      <price>29.99</price> 
     </book> 
     <book> 
      <title lang=""eng"">Learning XML</title> 
      <price>39.95</price> 
     </book> 
     </bookstore> 
     "; 

       static void Main(string[] args) 
       { 
        HtmlDocument doc = new HtmlDocument(); 
        byte[] byteArray = Encoding.ASCII.GetBytes(html); MemoryStream stream = new MemoryStream(byteArray); 
        var ts = new MemoryStream(byteArray); 
        doc.Load(ts); 
        var root = doc.DocumentNode; 
        var tag = root.SelectSingleNode("/div"); 
        var attrib = tag.Attributes["anattribute"]; 
        Console.WriteLine(attrib.Value); 
       } 
      } 
     } 

进一步把它:

获取擅长的XPath。这里是一个开始的好地方。

http://www.w3schools.com/xpath/xpath_syntax.asp

+0

我玩弄了HtmlAgilityPack,现在我能够提取图像。谢谢你的提示,先生! – Dragan