C#:HtmlAgilityPack提取内部文本

我正在使用HtmlAgilityPack。 是否有一行代码,我可以得到所有内部文本的HTML,例如,删除所有的HTML标签和脚本?

喜欢这个:

document.DocumentNode.InnerText 

请注意,这将返回<script>标签的文本内容。

要解决这个问题,你可以删除所有的<script>标签,像这样:

 foreach(var script in doc.DocumentNode.Descendants("script").ToArray()) script.Remove(); foreach(var style in doc.DocumentNode.Descendants("style").ToArray()) style.Remove(); 

我写了一个简单的方法。 它可以帮助你。 该方法可以提取所有特定标签的节点。 然后你可以使用HtmlNodeCollection[i].InnerText来获取文本。

  HtmlDocument hDoc; HtmlNodeCollection nodeCollection; public void InitInstance(string htmlCode) { hDoc.LoadHtml(htmlCode); nodeCollection = new HtmlNodeCollection(); } private void GetAllNodesInnerTextByTagName(HtmlNode node, string tagName) { if (null == node.ChildNodes) { return ; } else { HtmlNodeCollection nCollection = node.SelectNodes( tagName ); if( null != nCollection ) { for( int i=0; i<nCollection.Count; i++) { nodeCollection.Add( nCollection[i]); nCollection[i].Remove(); } } nCollection=node.ChildNodes; if(null != nCollection) { for(int i=0;i<nCollection.Count; i++) { GetAllNodesInnerTextByTagName( nCollection[i] , tagName ); } } }