2012-02-05 71 views
6

我试图HtmlAgilityPack和下面的代码,但它不会从HTML列表捕获文本:如何从HTML源文件中提取页面上可见的文本?

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument(); 
doc.LoadHtml(htmlStr); 
HtmlNode node = doc.DocumentNode; 
return node.InnerText; 

这里是一个失败的代码:

<as html> 
<p>This line is picked up <b>correctly</b>. List items hasn't...</p> 
<p><ul> 
<li>List Item 1</li> 
<li>List Item 2</li> 
<li>List Item 3</li> 
<li>List Item 4</li> 
</ul></p> 
</as html> 
+0

这可能是因为Javascript。 – SLaks 2012-02-05 23:00:01

+0

显示您正在分析的HTML。 – RedFilter 2012-02-05 23:03:51

+0

@RedFilter我已经更新了HTML。 – 2012-02-05 23:13:51

回答

2

InnerText下面这段代码工作对我来说:

string StripHTML(string htmlStr) 
{ 
    HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument(); 
    doc.LoadHtml(htmlStr); 
    var root = doc.DocumentNode; 
    string s = ""; 
    foreach (var node in root.DescendantNodesAndSelf()) 
    { 
     if (!node.HasChildNodes) 
     { 
      string text = node.InnerText; 
      if (!string.IsNullOrEmpty(text)) 
      s += text.Trim() + " ";      
     } 
    } 
    return s.Trim(); 
} 
3

因为你需要走到树和CONCAT在某种程度上所有节点

相关问题