除了html中的文本之外的所有内容

时间:2009-09-08 13:18:39

标签: c# html string

我们的CMS允许用户使用html编辑器输入文本,因此当在网页中阅读文本时,我可以这样发短信:

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

我如何删除除文字在内的所有内容,包括和。和类似的人物?

5 个答案:

答案 0 :(得分: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 :(得分:0)

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

  • <P>hello</P>会让你“你好”
  • <P>hello</P><P>hello</P>将使用rootNode.innerText为您提供“hellohello” - 这就是为什么您必须使用它来为每个节点获取“hello hello”。

答案 2 :(得分:0)

使用

var a = new Regex(“&lt; [^&gt;] + /?&gt;”); var v = a.Replace(“my dirty text here”,“”);

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

答案 3 :(得分:0)

我一直在使用正则表达式从网页中过滤HTML以仅检索文本本身,如下所示:

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

答案 4 :(得分:-1)

使用XML:

rootNode.innerText

但您的输入必须先作为规范化的XML进行检查。