c# – 如何从html中提取文本

我需要提取< body>中存在的所有文本.的 HTML.示例 Html输入: –
<html>
    <title>title</title>
    <body>
           <h1> This is a big title.</h1>
           How are doing you?
           <h3> I am fine </h3>
           <img src="abc.jpg"/>
    </body>
</html>

输出应该是: –

This is a big title. How are doing you? I am fine

我只想将HtmlAgility用于此目的.请不要正则表达式.

我知道如何加载HtmlDocument,然后使用像’// body’这样的xquery,我们可以获取正文内容.但是如何删除输出显示的html?

提前致谢 :)

解决方法

你可以使用body的InnerText:
string html = @"
<html>
    <title>title</title>
    <body>
           <h1> This is a big title.</h1>
           How are doing you?
           <h3> I am fine </h3>
           <img src=""abc.jpg""/>
    </body>
</html>";

HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(html);
string text = doc.DocumentNode.SelectSingleNode("//body").InnerText;

接下来,您可能想要折叠空格和新行:

text = Regex.Replace(text,@"\s+"," ").Trim();

但请注意,虽然它在这种情况下工作,但标记如hello< br> world或hello< i> world< / i>将被InnerText转换为helloworld – 删除标签.很难解决这个问题,因为显示由CSS决定,而不仅仅是由标记决定.

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...