C# 如何从htmlagility pack中的节点访问子节点
C# 如何从htmlagility pack中的节点访问子节点,c#,html-agility-pack,C#,Html Agility Pack,我将html加载到HtmlDocument中。然后我选择XPath作为submin。然后我不知道如何分别访问每个标签,即h2,p HtmlAgilityPack.HtmlNodeCollection nodes=doc.DocumentNode.SelectNodes(“//div[@class=\”submin\”); foreach(节点中的HtmlAgilityPack.HtmlNode节点){} 如果我使用node.InnerText我会得到所有的文本,InnerHtml也没有用。如何
-
我将html加载到
HtmlDocument
中。然后我选择XPath作为submin
。然后我不知道如何分别访问每个标签,即h2
,p
HtmlAgilityPack.HtmlNodeCollection nodes=doc.DocumentNode.SelectNodes(“//div[@class=\”submin\”);
foreach(节点中的HtmlAgilityPack.HtmlNode节点){}
如果我使用
node.InnerText
我会得到所有的文本,InnerHtml
也没有用。如何选择单独的标记?从内存中,我相信每个节点都有自己的ChildNodes
集合,因此在每个块的中,您应该能够检查节点。ChildNodes
以下内容将有所帮助:
HtmlAgilityPack.HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//div[@class=\"submain\"]");
foreach (HtmlAgilityPack.HtmlNode node in nodes) {
//Do you say you want to access to <h2>, <p> here?
//You can do:
HtmlNode h2Node = node.SelectSingleNode("./h2"); //That will get the first <h2> node
HtmlNode allH2Nodes= node.SelectNodes(".//h2"); //That will search in depth too
//And you can also take a look at the children, without using XPath (like in a tree):
HtmlNode h2Node = node.ChildNodes["h2"];
}
HtmlAgilityPack.HtmlNodeCollection nodes=doc.DocumentNode.SelectNodes(“//div[@class=\”submin\”);
foreach(节点中的HtmlAgilityPack.HtmlNode节点){
//你说你想在这里访问,?
//你可以做:
HtmlNode h2Node=node.SelectSingleNode(“./h2”);//将获取第一个节点
HtmlNode allH2Nodes=node.SelectNodes(“.//h2”);//也将进行深度搜索
//您还可以在不使用XPath(如在树中)的情况下查看子项:
HtmlNode h2Node=node.ChildNodes[“h2”];
}
您正在寻找后代
var firstSubmainNodeName = doc
.DocumentNode
.Descendants()
.Where(n => n.Attributes["class"].Value == "submain")
.First()
.InnerText;
感谢语法node。选择singlenode(“/h2”)