c#之使用 Html Agility Pack 获取 html 页面上的所有 div id
zlslch
阅读:16
2024-11-01 17:39:52
评论:0
如何使用 Html Agility Pack 获取 html 页面上的所有 div id。我正在尝试获取所有 ID 并将它们放入一个集合中。
<p>
<div class='myclass1'>
<div id='f'>
</div>
<div id="myclass2">
<div id="my"><div id="h"></div><div id="b"></div></div>
</div>
</div>
</p>
代码:
HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument();
htmlDoc.OptionFixNestedTags=true;
htmlDoc.Load(filePath);
HtmlNode bodyNode = htmlDoc.DocumentNode.SelectSingleNode("div");
如何获取所有 div id 的集合?
请您参考如下方法:
如果您只想要 ID,可以获取这些 ID 的集合 id
属性节点而不是获取 div
的集合元素节点。例如:
List<string> ids = new List<string>();
foreach(XmlNode node in doc.SelectNodes("//div/@id"))
{
ids.Add(node.InnerText);
}
这将跳过 div
没有 ID 的元素,例如 <div class='myclass1'>
您示例中的元素。
"//div/@id"
是一个 XPath 字符串。如果您经常处理 XML,或者在这种情况下,通过 agility pack 库处理 HTML,那么 XPath 是一种很容易学习的技术。 XPath 是一种行业标准,允许您在 XML 文档中选择匹配的节点。
-
//
意味着您希望它选择以下节点作为当前节点或其任何后代的子节点。由于当前节点是文档的根节点,这将在文档的任何位置找到匹配的节点。 -
div
是我们要匹配的元素名称。所以,在这种情况下,我们告诉它找到所有div
文档中任意位置的元素。 -
/
表明你想要一个子节点。在这种情况下id
属性是div
的子项元素,所以首先我们说我们想要div
元素,那么我们需要正斜杠来表示我们想要div
之一元素的子节点。 -
@id
意味着我们要找到所有id
属性。@
符号表示它是属性名而不是元素名。
声明
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。