【问题标题】:Get values of htm tags with HtmlAgilityPack [closed]使用 HtmlAgilityPack 获取 html 标签的值 [关闭]
【发布时间】:2015-01-23 08:57:29
【问题描述】:

我有很多具有以下样式的 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>

【问题讨论】:

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


    【解决方案1】:

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

    希望对你有所帮助。

    【讨论】:

    • 好的@Alex我很高兴帮助你,请接受答案
    • 谢谢,那行得通。如果您能帮助我,我将不胜感激,在某些情况下,我提取了这些值,例如“Salsa’s - \t\t\t\tIs your book!\t\t\t\t\n \t\t\t\t" 或另一个“从我们的新鲜食物中选择, - 它是你的”。在这些情况下,我该怎么做才能删除或转换无用字符?
    • @Alex 为了避免编码问题我使用这个stackoverflow.com/questions/18308059/… 并且对于空格尝试在 C# 中使用 trim() 或者你可以使用正则表达式来删除多余的空格
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-22
    • 1970-01-01
    • 2019-06-18
    相关资源
    最近更新 更多