C# 选择使用特定类和设置为特定值的属性的节点
我有以下代码来查找HTML中的某些元素,并对具有特定属性的元素进行处理: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
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帖子。