【问题标题】:SelectNodes using a specific class and an attribute set to a specific valueSelectNodes 使用特定的类和设置为特定值的属性
【发布时间】:2019-03-16 10:19:24
【问题描述】:

我有以下代码可以在我的 HTML 中找到一些元素,并对那些具有特定属性的元素做一些事情:

HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(htmlString);

foreach (HtmlNode div in doc.DocumentNode.SelectNodes("//div[contains(@class,'item')]"))
{
    var hasAttachments = div.Attributes.FirstOrDefault(a => a.Name.Equals("hasattachments"));
    if (hasAttachments.Value.Equals("True"))
    {
        var itemId = div.Attributes.FirstOrDefault(a => a.Name.Equals("itemid")).Value;
        doStuffWithItemId(itemId);
    }
}

我想知道是否可以合并我的查询以查找具有类属性值设置为"True"的元素,如下所示:

HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(htmlString);

foreach (HtmlNode div in doc.DocumentNode.SelectNodes("//div[contains(@class,'item')] and //div[@data-hasattachments=\"True\"]"))
{
    var itemId = div.Attributes.FirstOrDefault(a => a.Name.Equals("itemid")).Value;
    doStuffWithItemId(itemId);
}

【问题讨论】:

    标签: c# .net xpath html-agility-pack


    【解决方案1】:

    这不是真正的 HAP 问题,而是 xPath 问题。您甚至可以在 chrome 开发工具中轻松测试 xPath。另外,您走在正确的道路上,只需将 and 放在另一层中即可。我用一些模拟数据尝试了这个,它对我有用。

    //div[contains(@class,'item') and @data-hasattachments="True"]
    

    这是一个相关的 SO 帖子。 XPath with multiple conditions

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-21
      • 2021-05-19
      相关资源
      最近更新 更多