Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从htmlagility pack中的节点访问子节点_C#_Html Agility Pack - Fatal编程技术网

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”)