【问题标题】:VB.net Fill Textbox with HTML stringVB.net 用 HTML 字符串填充文本框
【发布时间】:2015-11-17 19:47:52
【问题描述】:

我有一个来自启用 HTML 的电子邮件的字符串,类似于:

</div><span color="red">Hi how are you?!</span></div><table><tr><td>Company Information</td></tr></table>

等等[这是一长串的东西,但你明白了。有&lt;div&gt;..&lt;spans&gt;..&lt;table&gt;等等。

我想在格式为 html 的文本框中显示文本 [它将根据&lt;table&gt;..&lt;span&gt; 等对其进行格式化,同时删除&lt;span&gt; 等的实际文本来自文本框的文本。

我需要这样做,因为我收到一个页面错误,因为它读取 &lt;span&gt; 等是一个安全问题。

我目前阅读全文并消除问题的方式是这样的:

        If Not DsAds.Tables(0).Rows(0).Item(0) Is DBNull.Value Then
            Dim bodyInitial As String = DsAds.Tables(0).Rows(0).Item(0).ToString()

            Dim newbody As String = bodyInitial.Replace("<br>", vbNewLine)
            newbody = newbody.Replace("<b>", "")
            newbody = newbody.Replace("</b>", "")
            Bodylisting.Text = newbody
        End If

我尝试加入以下内容:

Dim bodyInitial As String = DsAds.Tables(0).Rows(0).Item(0).ToString()
        Dim myEncodedString As String
        ' Encode the string.
        myEncodedString = bodyInitial.HttpUtility.HtmlEncode(bodyInitial)

        Dim myWriter As New StringWriter()
        ' Decode the encoded string.
        HttpUtility.HtmlDecode(bodyInitial, myWriter)

但我在使用 HTTpUtility 和字符串时遇到错误

问题:

所以我的问题是,有没有办法实际查看 HTML 格式并以这种方式填充文本框,还是我必须坚持使用我的 .Replace 方法?

<asp:TextBox ID="Bodylisting" runat="server" style="float:left; margin:10px; padding-bottom:500px;" Width="95%" TextMode="MultiLine" ></asp:TextBox>

【问题讨论】:

    标签: html vb.net textbox


    【解决方案1】:

    我建议你调查HtmlAgilityPack。这个库包括一个解析器,让您能够“选择”&lt;span&gt; 标签。拥有它们后,您可以将它们剥离,或者获取 InnerHtml 并进行进一步处理。这是我如何用它做类似事情的一个例子。

        Private Shared Function StripHtml(html As String, xPath As String) As String
            Dim htmlDoc As New HtmlDocument()
            htmlDoc.LoadHtml(html)
            If xPath.Length > 0 Then
                Dim invalidNodes As HtmlNodeCollection = htmlDoc.DocumentNode.SelectNodes(xPath)
                If Not invalidNodes Is Nothing Then
                    For Each node As HtmlNode In invalidNodes
                        node.ParentNode.RemoveChild(node, True)
                    Next
                End If
            End If
            Return htmlDoc.DocumentNode.WriteContentTo()
    
    
        End Function
    

    【讨论】:

    • 感谢您的建议和参考。我将使用以下编码。再次感谢!
    • 另外,如果你不介意我问,你用什么Import 来定义New HtmlDocument()
    • 很高兴我能帮上忙 Imports HtmlAgilityPack 会让你到达 HtmlDocument
    • 当我把Imports HtmlAgilityPack HtmlAgilityPack 下有一条绿线,没有任何建议,好像它不存在一样
    • 您是否下载了文件并将对 DLL 的引用添加到您的项目中?
    猜你喜欢
    • 1970-01-01
    • 2015-01-16
    • 1970-01-01
    • 2019-05-31
    • 2016-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-10
    相关资源
    最近更新 更多