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

 <p>
 <strong>text text. more
text</strong>
 <a href="http://blabla>blabla</a> even more text...
我怎样可以去除一切,但文本包括,和。和类似的字符?
我们的CMS允许用户使用HTML编辑器来输入文字文本,所以阅读文本到网页时,我可以文字是这样的:地带的一切,但是从HTML

 <p>
 <strong>text text. more
text</strong>
 <a href="http://blabla>blabla</a> even more text...
我怎样可以去除一切,但文本包括,和。和类似的字符?
假设这是HTML(不是XHTML),我会用HTML Agility Pack分析它,并获得InnerText:
static void Main()
{
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(@"
 <p>
 <strong>text text. more text</strong>
 <a href=""http://blabla>blabla</a> even more text...");
string s = doc.DocumentNode.InnerText;
// s is: 
 
 text text. more text

}
使用XML:
rootNode.innerText
但是你的输入必须要作为一个标准化的XML前检查。
您可以将它加载到XDocument
/XElement
对象中并获取Value
属性,它实际上会返回该元素的内部文本。您必须通过使用深度枚举xml/html树(并在每个内部文本节点之间添加空格)来为每个元素执行此操作。
<P>hello</P>
将让你“你好”<P>hello</P><P>hello</P>
将让你“hellohello”使用rootNode.innerText - 这就是为什么你必须使用它的每一个节点,以获得“你好你好”。使用
变种一个新=正则表达式( “< [^>] + />?”); var v = a.Replace(“我的脏文本在这里”,“”);
v现在将包含没有属性和标签的文本。
我一直在使用正则表达式从网页过滤HTML只检索文本本身如下:
Regex.Replace(requestHtml, "<.*?>", string.Empty)