我有以下代码来查找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);
}
答案 0 :(得分:1)
这实际上不是HAP问题,而是xPath。您甚至可以在chrome开发工具中轻松测试xPath。同样,您在正确的道路上只需要将and放在另一层即可。我尝试了一些模拟数据,对我有用。
//div[contains(@class,'item') and @data-hasattachments="True"]
这是一个相关的SO帖子。 XPath with multiple conditions