使用Html敏捷包剥离所有html标签

前端之家收集整理的这篇文章主要介绍了使用Html敏捷包剥离所有html标签前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个这样的HTML字符串:
<html><body><p>foo <a href='http://www.example.com'>bar</a> baz</p></body></html>

我希望剥离所有html标签,以便生成的字符串变成:

foo bar baz

从另一个帖子在这里,我已经提出了这个功能(使用Html敏捷包):

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

不幸的是,这不会返回我的期望,而是给出:

bazbarfoo

请问我哪里错了 – 这是最好的方法吗?

问候和快乐的编码!

更新:通过以下答案,我想出了这个功能,可能对别人有用:

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

解决方法

为什么不返回htmldoc.DocumentNode.InnerText而不是删除所有的非文本节点?它应该给你你想要的

猜你在找的HTML相关文章