Mul*_*ner 17 html vb.net strip html-agility-pack
我有一个像这样的html字符串:
<html><body><p>foo <a href='http://www.example.com'>bar</a> baz</p></body></html>
Run Code Online (Sandbox Code Playgroud)
我希望删除所有html标记,以便生成的字符串变为:
foo bar baz
Run Code Online (Sandbox Code Playgroud)
从SO的另一篇文章中我得出了这个函数(使用Html Agility Pack):
Public Shared Function stripTags(ByVal html As String) As String
Dim plain As String = String.Empty
Dim htmldoc As New HtmlAgilityPack.HtmlDocument
htmldoc.LoadHtml(html)
Dim invalidNodes As HtmlAgilityPack.HtmlNodeCollection = htmldoc.DocumentNode.SelectNodes("//html|//body|//p|//a")
If Not htmldoc Is Nothing Then
For Each node In invalidNodes
node.ParentNode.RemoveChild(node, True)
Next
End If
Return htmldoc.DocumentNode.WriteContentTo
End Function
Run Code Online (Sandbox Code Playgroud)
不幸的是,这不会返回我的预期,而是给出:
bazbarfoo
Run Code Online (Sandbox Code Playgroud)
请问,我哪里出错 - 这是最好的方法吗?
问候和快乐的编码!
更新:通过下面的答案我想出了这个功能,可能对其他人有用:
Public Shared Function stripTags(ByVal html As String) As String
Dim htmldoc As New HtmlAgilityPack.HtmlDocument
htmldoc.LoadHtml(html.Replace("</p>", "</p>" & New String(Environment.NewLine, 2)).Replace("<br/>", Environment.NewLine))
Return htmldoc.DocumentNode.InnerText
End Function
Run Code Online (Sandbox Code Playgroud)