将渲染的HTML转换为文本

时间:2014-10-28 12:54:32

标签: c# html

是否可以将呈现的HTML页面转换为纯文本,甚至是格式化文本?

例如,以下HTML页面/代码:

<html>
<head></head>
<body>
<p>This is the first paragraph</p>
<ol>
<li>This is a list item</li>
<li>And another</li>
</ol>
<p>This is the second paragraph</p>
</body>
</html>

将转换为以下字符串值:

  

     

这是第一段

     
      
  1. 这是一个列表项
  2.   
  3. 另一个
  4.         

    这是第二个parapgrah

         

如果是这样,我怎么能这样做?我可以使用像webbrowser这样的内置对象来访问呈现的内容吗?

修改

解决方案:似乎没有任何内置方法可以将呈现的HTML代码转换为纯文本。你必须得到一些第三方工具来为你做,或建立自己的。对于第三方工具解决方案,请查看下面评论中的第一个链接。

额外信息:

对于我的问题,我基本上将RTF文档转换为HTML。我正在使用一个库来执行此操作,可在此处找到:Writing your own RTF Converter

但是,此库不会考虑缩进列表...例如,使用此转换器,此RTF内容:

  
      
  1. 一些文字
  2.   
  3. 更多文字

         

    一个。子文本

  4.   

在HTML转换版本中成为:

  
      
  1. 一些文字
  2.   
  3. 更多文字:
  4.   
  5. 子文字
  6.   

为了解决这个问题(因为图书馆的作者似乎没有兴趣解决这个问题),我决定在内容转换后执行我自己的替换。为此,我需要将原始RTF文本与HTML RENDERED文本进行比较,以查看子弹编号是否匹配。这就是为什么我想要一种简单的方法将呈现的HTML内容转换为字符串...然后我可以根据需要解析列表项,并将它们的标题与RTF标题进行比较。

似乎我必须手动解析转换后的HTML中的任何OL和UL标记,并自己为每个LI条目分配一个值,以便根据RTF版本检查结果。

感谢所有为此答案做出贡献的人。

1 个答案:

答案 0 :(得分:0)

使用jQuery,

function htmlStripTags(value) {
    return $("<div/>").html(value).text();
}

function htmlDecode(value) {
    return $("<textarea/>").html(value).text();
}

function htmlEncode(value) {
    return $('<textarea/>').text(value).html();
}

jQuery将在内存中创建“&lt; div /&gt;”标签。它将删除html标签,只留下文本。注意:使用“&lt; textarea /&gt;”将保留html标签。