如何从HTML中获取所有具有相同class属性的元素?

发布于 2024-12-07 05:06:09 字数 533 浏览 3 评论 0原文

我开发了一个 asp.net 应用程序,因为我使用 htmlagility dll 来获取所有具有相同类属性的

标签。
如何从整个html页面中获取具有相同类的所有元素,
我得到了具有 class='myclass' 的前 1 位 div,但是在,
我的情况是我想要所有具有 'myclass' 类的 div 标签。

var vardoc = web.Load("<any website url>"); 
var varmyclass = doc.DocumentNode.SelectSingleNode("//div[@class='myclass']"); 

当我使用上面的方法时,我获取了“myclass”的内部 html 内容,但是在我的 html 内容中,有许多具有“myclass”类的 div 标签。 我想使用 HTMLagility 或其他方式获取具有相同班级的所有

I developing one asp.net application in that I using htmlagility dll to get all <div> tags which is same class attributes..

How to get all elements who have same class from whole html page,

I getting top 1 div who having class='myclass' but in,
my case I want to all div tags who have 'myclass' class.

var vardoc = web.Load("<any website url>"); 
var varmyclass = doc.DocumentNode.SelectSingleNode("//div[@class='myclass']"); 

when I used above method then I getting inner html content of the 'myclass' but in my html contents there are many div tags who have class 'myclass'.
I want to get all <div> who have same class using HTMLagility or other

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

还如梦归 2024-12-14 05:06:09

在这种情况下,不要选择单个节点。

您正在使用 SelectSingleNode,它将仅返回一个节点。

使用 SelectNodes 代替:

var varmyclass = doc.DocumentNode.SelectNodes("//div[@class='myclass']");

Don't select a single node in that case.

You are using SelectSingleNode, which will return only one node.

Use SelectNodes instead:

var varmyclass = doc.DocumentNode.SelectNodes("//div[@class='myclass']");
川水往事 2024-12-14 05:06:09

您几乎是在 XML 文档中搜索这些节点。

首先,您选择一个仅返回 1 的节点。您需要使用 SelectNodes。

示例:

var varmyclass = doc.DocumentNode.SelectNodes("//div[@class='myclass']");

更新 - 删除了我的 Xpath 建议,因为它没有像我想象的那样工作......

You're pretty much searching an XML document for these nodes.

First off, you're selecting a single node which will only return 1. You need to use SelectNodes.

example:

var varmyclass = doc.DocumentNode.SelectNodes("//div[@class='myclass']");

Update - Removed my Xpath suggestion as it didn't work as I thought it would...

蓝海似她心 2024-12-14 05:06:09

有两个问题,第一个问题是您应该使用 SelectNodes() 来代替,正如其他答案所指出的那样,因为您想要选择多个节点。

另外,您的 XPath 有一点限制。它只会获取只有一个类 myclassdiv 元素,但不包括具有多个类的元素。我怀疑你也想包括这些。不是检查类是否相等,而是检查它是否包含它。

var xpath = "//div[contains(@class,'myclass')]";
var query = doc.DocumentNode.SelectNodes(xpath);

Two issues, first one is that you should be using SelectNodes() instead as the other answers have pointed out since you want to select multiple nodes.

Also, your XPath is a bit restrictive. It will only get div elements which has only one class, myclass but doesn't include those that have multiple classes. I suspect you want to include those as well. Rather than checking if the class is equal, check if it contains it.

var xpath = "//div[contains(@class,'myclass')]";
var query = doc.DocumentNode.SelectNodes(xpath);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文