使用HtmlAgilityPack获取html标记的值

时间:2015-01-23 00:04:47

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

我有很多带有以下风格的Html块代码,我需要

的值
  1. img
  2. 的src属性值
  3. 日期值
  4. 第二个img的源属性值
  5. 详情
  6. 我在代码中指定了这些数字。

    最后,我想将所有这些值放在XML文件中。那么请问我如何用HtmlAgilityPack获取这些值?

    提前致谢。

    <div class="promotion"> 
     <div class="logo">
           <img src='http://www.example.com/D.jpg' **(1)**>         
     </div>
     <div class="details">
        <p class="date"> 2015/12/12 **(2)** </p>
        <p> 
           <img src="http://www.example.com/DDD.jpg" **(3)** alt="" />
           <h3> Some Details **(4)** </h3>
        </p> 
     </div>
    </div>
    

1 个答案:

答案 0 :(得分:3)

如果你的HTML就像你提出的那样,你可以使用XPath以下列方式检索你的结果:

使用之前的代码,例如使用HTML进行测试:

var html = @"<div class='promotion'> 
                     <div class='logo'>
                           <img src='http://www.example.com/D.jpg' **(1)**>         
                     </div>
                     <div class='details'>
                        <p class='date'> 2015/12/12 **(2)** </p>
                        <p> 
                           <img src='http://www.example.com/DDD.jpg' **(3)** alt='' />
                           <h3> Some Details **(4)** </h3>
                        </p> 
                     </div>
                    </div>";

var doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);
  1. 对于第一张图片,例如:

    var value = doc.DocumentNode.SelectSingleNode("//div[@class='logo']/img").Attributes["src"].Value;
    
  2. 对于第二个这样的事情:

    var value = doc.DocumentNode.SelectSingleNode("//p[@class='date']").InnerText;
    
  3. 第三个:

    var value = doc.DocumentNode.SelectSingleNode("//div[@class='details']/p[2]/img").Attributes["src"].Value;
    
  4. 对于四个人:

    var value = doc.DocumentNode.SelectSingleNode("//div[@class='details']/p[2]/h3").InnerText;
    
  5. 我希望这对你有所帮助。