C# 使用html Agility Pack获取html页面上的所有divs ID
如何使用html Agility Pack获取html页面上的所有divs ID。我正在尝试获取所有ID并将其放入一个集合中C# 使用html Agility Pack获取html页面上的所有divs ID,c#,html-agility-pack,C#,Html Agility Pack,如何使用html Agility Pack获取html页面上的所有divs ID。我正在尝试获取所有ID并将其放入一个集合中 <p> <div class='myclass1'> <div id='f'> </div> <div id="myclass2"> <div id="my"><div id="h"></div>
<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>
如何获取所有div id的集合?Yo可以通过传递xpath语法来获取div的集合 像这样
HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument();
htmlDoc.OptionFixNestedTags=true;
htmlDoc.Load(filePath);
foreach(HtmlNode div doc.DocumentElement.SelectNodes("//div"))
{
///.. code here
}
如果只需要ID,可以获取那些
ID
属性节点的集合,而不是获取div
元素节点的集合。例如:
List<string> ids = new List<string>();
foreach(XmlNode node in doc.SelectNodes("//div/@id"))
{
ids.Add(node.InnerText);
}
List id=new List();
foreach(doc.SelectNodes(“//div/@id”)中的XmlNode节点)
{
Add(node.InnerText);
}
这将跳过没有ID的div
元素,例如示例中的
元素
“//div/@id”
是一个XPath字符串。如果您通过agility pack库大量处理XML,或者在本例中处理HTML,那么XPath是一种非常方便学习的技术。XPath是一种行业标准,允许您在XML文档中选择匹配的节点
表示您希望它选择以下节点作为当前节点的子节点或其任何子节点。由于当前节点是文档的根节点,因此将在文档中的任何位置找到匹配的节点/
是我们要匹配的元素名称。因此,在本例中,我们告诉它查找文档中任何位置的所有div
元素div
表示需要子节点。在本例中,/
属性是id
元素的子元素,因此首先我们说我们想要div
元素,然后我们需要正斜杠来表示我们想要div
元素的子节点之一div
表示我们要查找所有@id
属性。id
符号表示它是属性名而不是元素名@
List<string> ids = new List<string>();
foreach(XmlNode node in doc.SelectNodes("//div/@id"))
{
ids.Add(node.InnerText);
}