2009-09-08 36 views
4

我们的CMS允许用户使用HTML编辑器来输入文字文本,所以阅读文本到网页时,我可以文字是这样的:地带的一切,但是从HTML

&#xD;&#xA;  <p>&#xD;&#xA;  <strong>text text. more 
text</strong>&#xD;&#xA;  <a href="http://blabla>blabla</a> even more text... 

我怎样可以去除一切,但文本包括,和。和类似的字符?

回答

6

假设这是HTML(不是XHTML),我会用HTML Agility Pack分析它,并获得InnerText

static void Main() 
{ 
    HtmlDocument doc = new HtmlDocument(); 
    doc.LoadHtml(@"&#xD;&#xA;  <p>&#xD;&#xA;  <strong>text text. more text</strong>&#xD;&#xA;  <a href=""http://blabla>blabla</a> even more text..."); 
    string s = doc.DocumentNode.InnerText; 
    // s is: &#xD;&#xA;  &#xD;&#xA;  text text. more text&#xD;&#xA;  
} 
-1

使用XML:

rootNode.innerText

但是你的输入必须要作为一个标准化的XML前检查。

0

您可以将它加载到XDocument/XElement对象中并获取Value属性,它实际上会返回该元素的内部文本。您必须通过使用深度枚举xml/html树(并在每个内部文本节点之间添加空格)来为每个元素执行此操作。

  • <P>hello</P>将让你“你好”
  • <P>hello</P><P>hello</P>将让你“hellohello”使用rootNode.innerText - 这就是为什么你必须使用它的每一个节点,以获得“你好你好”。
0

使用

变种一个新=正则表达式( “< [^>] + />?”); var v = a.Replace(“我的脏文本在这里”,“”);

v现在将包含没有属性和标签的文本。

0

我一直在使用正则表达式从网页过滤HTML只检索文本本身如下:

Regex.Replace(requestHtml, "<.*?>", string.Empty)