使用HtmlAgilityPack获取htm标记的值

c# css html html-agility-pack

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

  1. img的src属性值
  2. 日期值
  3. 第二个img的source属性值
  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;
    

我希望这对你有帮助。



许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因