【问题标题】:Nodes selection inside HtmlNodeCollection with HTML Agility Pack使用 HTML Agility Pack 在 HtmlNodeCollection 中选择节点
【发布时间】:2014-03-20 08:44:51
【问题描述】:

我有这样的html结构:

<div class="class1">
    <div class="class2">
        <a href="test" title="professional and enthusiast programmers">Stack Overflow</a>
    </div>
    <div class="class2">
    </div>
    <div class="class2">
    </div>
    <div class="class2">
    </div>
</div>
<div class="class1">
    <div class="class2">
        <a href="test" title="professional and enthusiast programmers">Stack Overflow</a>
    </div>
</div>

我正在尝试选择所有具有 class1 的节点:

HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//*[contains(@class,' class1 ')]");

并选择该节点内包含 class2 的所有节点:

foreach (HtmlNode node in nodes)
{
   HtmlNodeCollection nodes2 = node.SelectNodes("//*[contains(@class,' class2 ')]");
}

但 nodes2 从所有节点获取 class2。我做错了什么?

【问题讨论】:

    标签: c# linq xml-parsing html-agility-pack xmlnode


    【解决方案1】:
    var nodes = doc.DocumentNode.SelectNodes("//div[@class='class1']");
    
    var nodes2 = nodes.Select(c1 => c1.SelectNodes("div[@class='class2']"));
    

    【讨论】:

      【解决方案2】:

      替代 XPath 对我有用

      var nodes = doc.DocumentNode.SelectNodes("//div[@class='class1']");
      var nodes2 = nodes.Select(c1 => c1.SelectNodes(".//div[@class='class2']"));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-06-13
        • 2011-11-08
        • 1970-01-01
        • 2011-09-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多