使用 HtmlAgilityPack 获取 html 标签的值

Get values of htm tags with HtmlAgilityPack

我有很多具有以下样式的 Html 块代码,我需要

的值
  1. img 的 src 属性值
  2. 日期值
  3. 第二个 img 的源属性值
  4. 详情

我在代码中指定了这些数字。

最后我想将所有这些值放在一个 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>

如果您 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;
    

希望对你有所帮助。