2015-11-17 5 views
1

У меня есть строка из HTML включена по электронной почте что-то вроде так:VB.net Заполните Textbox с HTML строкой

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

и так далее [его длинная череды вещей, но вы получите идею. Есть <div> .. <spans> .. <table> и пр.

Я хочу, чтобы отобразить текст в текстовом поле, отформатированный как HTML [который будет форматировать его на основе <table> .. <span> и так далее, удаляя фактический текст <span> и так далее из текста в текстовом поле в.

Мне нужно, чтобы это произошло, потому что я получаю сообщение об ошибке страницы, потому что он читает <span> и т. Д. Как проблему безопасности.

Мой текущий способ чтения всего текста и удаление вопросов, как так:

 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 

Я попытался encorporate следующее:

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> 

ответ

1

Предлагаю вам исследовать HtmlAgilityPack. Эта библиотека включает в себя синтаксический анализатор, дающий вам возможность «выбирать» теги <span>. Как только вы их получите, вы можете удалить их или захватить 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 
+0

Благодарим вас за предложения и рекомендации. Я буду играть со следующей кодировкой. Еще раз, я ценю это! – narue1992

+0

Кроме того, если вы не возражаете, я спрашиваю, что «Импорт» вы используете для определения «New HtmlDocument()»? – narue1992

+0

Рад, что я могу помочь 'Импорт HtmlAgilityPack' позволит вам добраться до' HtmlDocument' – InbetweenWeekends