Strippen aller HTML-Tags mit Html Agility Pack
Ich habe eine HTML-Zeichenfolge wie folgt:
<html><body><p>foo <a href='http://www.example.com'>bar</a> baz</p></body></html>
Ich möchte alle HTML-Tags entfernen, sodass die resultierende Zeichenfolge wie folgt aussieht:
foo bar baz
Von einem anderen Beitrag hier bei SO habe ich mir diese Funktion ausgedacht (die das Html Agility Pack verwendet):
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
Leider gibt dies nicht das zurück, was ich erwarte, sondern es gibt:
bazbarfoo
Bitte, wo gehe ich falsch - und ist das der beste Ansatz?
Regards und Happy Coding!
UPDATE: Durch die Antwort unten bin ich auf diese Funktion gekommen, die für andere nützlich sein könnte:
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