【问题标题】:HTML Agility Pack can't find classes with trailing spacesHTML Agility Pack 找不到带有尾随空格的类
【发布时间】:2016-02-26 03:59:30
【问题描述】:

我使用以下代码来解析 HTML 文档:

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(pageStr);
HtmlAgilityPack.HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//h3[@class='the-title']");

但找不到以下字符串:

<h3 class="the-title ">

并且仅在从类中删除尾随空格时才有效。

HTML 敏捷包可以自己处理这种情况吗?

【问题讨论】:

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


    【解决方案1】:

    'the-title' != "the-title"

    您可以通过在 Xpath 查询中使用“包含”功能来解决您的问题

    尝试以下方法:

    HtmlAgilityPack.HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//h3[contains(@class, 'the-title')]");
    

    【讨论】:

    • “the-title1”怎么样?也会被发现吗?
    【解决方案2】:

    在进行比较之前,您可以尝试使用 XPath normalize-space() 删除不必要的空格:

    //h3[normalize-space(@class)='the-title']
    

    工作演示示例:

    var html = @"<div>
        <h3 class='the-title '/>
    </div>";
    HtmlDocument doc = new HtmlDocument();
    doc.LoadHtml(html);
    var node = doc.DocumentNode.SelectSingleNode("//h3[normalize-space(@class)='the-title']");
    Console.WriteLine(node.OuterHtml);
    

    Dotnetfiddle Demo

    输出:

    <h3 class='the-title '></h3>
    

    【讨论】:

      猜你喜欢
      • 2010-12-24
      • 2018-06-13
      • 1970-01-01
      • 1970-01-01
      • 2012-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多