C# 4.0 如何使用相同的xpath查询在HTML代码中搜索类名和ID名?
我使用以下代码在HTML代码中搜索类名abc: 这给了我正确的结果 但是如果我想搜索ID名abc而不是类,上面的代码就不起作用了 可能我正在使用的代码包含@class word,因此它不适用于ID名称 有没有办法使用相同的代码搜索类名和ID名?首先,ID不同于ID。HTML不区分大小写,但XML区分大小写。看看这篇文章的作者 也就是说,当您使用其XPATH特性时,必须使用编写的标记 小写。这意味着//body表达式将匹配body,body 和body,和//body将不匹配 同样的意思是ID 关于过滤器逻辑,您必须使用: 或者更简单一点:C# 4.0 如何使用相同的xpath查询在HTML代码中搜索类名和ID名?,c#-4.0,xpath,html-agility-pack,C# 4.0,Xpath,Html Agility Pack,我使用以下代码在HTML代码中搜索类名abc: 这给了我正确的结果 但是如果我想搜索ID名abc而不是类,上面的代码就不起作用了 可能我正在使用的代码包含@class word,因此它不适用于ID名称 有没有办法使用相同的代码搜索类名和ID名?首先,ID不同于ID。HTML不区分大小写,但XML区分大小写。看看这篇文章的作者 也就是说,当您使用其XPATH特性时,必须使用编写的标记 小写。这意味着//body表达式将匹配body,body 和body,和//body将不匹配 同样的意思是ID 关
var nodes = doc.DocumentNode.SelectNodes("//*[@class=\"abc\" and @id=\"div1\"]");
但作为个人偏好,如果上下文允许,我会使用LINQ来实现:
var nodes = doc.DocumentNode.Descendants()
.Where(i =>
i.Attributes["class"] != null
&& i.Id != null
&& i.Attributes["class"].Value == "abc"
&& i.Id == "div1");
请给出示例XML代码和预期输出。@Ranon,我相信问题是关于HTML代码的。可能使用.XPath是在XML上的,所以如果他想使用它,哦,HTML,它必须是有效的XML,或者他必须使用某种HTML解析器将其形成有效的XML。不管怎样,他应该添加一些输入。嗨,我正在使用HtmlAgilityPack获取HTML代码部分,我正在搜索类或ID名称。我在这里没有使用任何XML代码
var nodes = doc.DocumentNode.SelectNodes("//*[@class=\"abc\" and @id=\"div1\"]");
var nodes = doc.DocumentNode.Descendants()
.Where(i =>
i.Attributes["class"] != null
&& i.Id != null
&& i.Attributes["class"].Value == "abc"
&& i.Id == "div1");