Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 选择使用特定类和设置为特定值的属性的节点_C#_.net_Xpath_Html Agility Pack - Fatal编程技术网

C# 选择使用特定类和设置为特定值的属性的节点

C# 选择使用特定类和设置为特定值的属性的节点,c#,.net,xpath,html-agility-pack,C#,.net,Xpath,Html Agility Pack,我有以下代码来查找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

我有以下代码来查找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);
}

这实际上不是一个HAP问题,而是一个xPath问题。您甚至可以在chrome开发工具中轻松测试xPath。同样,你在正确的道路上,只需要把和放在一个层中。我用一些模拟数据尝试了这个方法,它对我有效

//div[contains(@class,'item') and @data-hasattachments="True"]
这里是一个相关的SO帖子。