Benutzer mit den meisten Antworten
html in text speichern

Frage
-
Antworten
-
Hallo Bernd,
warum RTF? Du hast HTML Input behandelt. Wenn Du HTML Elemente entfernst, gibt es auch keine Information über einen Zeilenumbruch, außer im reinen Quelltext vorhandenem. Ggf. musst Du hier auch einfache Lf zu CrLf wandeln, je nach Ausgabemedium. Ggf. musst Du den Text auch nachformatieren und Zeilenumbrüche manuell einfügen, wenn die von Dir gewünschte Zeilenlänge erreicht ist. Das hängt halt von dem von Dir gewünschten Ergebnis ab.
Aber bisher hast Du uns ja nicht wirklich verraten, was Dein Ziel ist und was Du erwartest. Noch hast Du verraten, welche der genannten Möglichkeiten Du ausprobiert hast. Ich nehme an, es waren nicht alle.
Thorsten Dörfler
Microsoft MVP Visual Basic- Als Antwort markiert Bernd Schlepütz Dienstag, 8. Dezember 2009 15:37
Alle Antworten
-
Hallo Oliver,
ich kann z.B. aus meinem Forum oder Hompage seiten downloaden und dann in einer TextBox den Code anzeigen lassen.
Bisher habe ich mit Replace alle HTML sachen rausgefiltert. Aber das nimmt ja kein ende mehr.
Nun dachte ich, wenn doch eine rtf seite einfach so als txt gespeichert werden kann, warmum gibt es nicht soetwas für HTML.
Also url downloaden. html rausfiltern und dann in TextBox anzeigen.
sollte es dich interessieren dann schaud dir mein programm mal an.
es ist noch nicht fertig. aber das was funktioniert sieht schonmal gut aus.
danke dir
bernd
http://proggerfuny.foren-city.de/topic,214,-proggerfuny-codebox-version-1-0-0-0-ist-fertig.html -
Hallo Bernd,
Das Herausfiltern über String.Replace ist in der Tat nicht die effektivste Möglichkeit, die HTML Tags zu entfernen. Hier würde man schon eher über Regular Expressions gehen und selbst das ist noch mit einigem Aufwand verbunden:
Convert HTML to Plain Text
http://www.codeproject.com/KB/HTML/HTML_to_Plain_Text.aspx
Als einfache Lösung bietet sich das WebBrowser Control an. Über Document.Body.OuterText bekommst Du den reinen Text des HTML Dokuments:
Dim lWeb As New WebBrowser Dim lText As String lWeb.Navigate("http://www.vb-hellfire.de") Do While lWeb.ReadyState <> WebBrowserReadyState.Complete Application.DoEvents() Loop If lWeb.Document IsNot Nothing AndAlso _ lWeb.Document.Body IsNot Nothing Then lText = lWeb.Document.Body.OuterText End If
Ist von der Ressourcennutzung nicht ganz ohne, da im Hintergrund quasi eine Internet Explorer Instanz gestartet wird. Ggf. lässt sich das auch alleine über die MSHTML Library erreichen.
Das HtmlAgilityPack enthält auch eine Komponente zur Konvertierung von HTML zu Text:
http://www.codeplex.com/htmlagilitypack
Als weitere Option bietet sich der Plain-Text Webbrowser Lynx an, dessen Ausgabe man sich entsprechend umleiten kann. Vorteil dürfte vor allem eine bessere Darstellung sein, da hier nicht nur einfach HTML Tags entfernt werden.
Thorsten Dörfler
Microsoft MVP Visual Basic- Als Antwort markiert Bernd Schlepütz Sonntag, 6. Dezember 2009 17:40
- Tag als Antwort aufgehoben Bernd Schlepütz Montag, 7. Dezember 2009 13:43
- Als Antwort vorgeschlagen Thorsten DörflerModerator Donnerstag, 10. Dezember 2009 20:48
-
-
Hallo Bernd,
warum RTF? Du hast HTML Input behandelt. Wenn Du HTML Elemente entfernst, gibt es auch keine Information über einen Zeilenumbruch, außer im reinen Quelltext vorhandenem. Ggf. musst Du hier auch einfache Lf zu CrLf wandeln, je nach Ausgabemedium. Ggf. musst Du den Text auch nachformatieren und Zeilenumbrüche manuell einfügen, wenn die von Dir gewünschte Zeilenlänge erreicht ist. Das hängt halt von dem von Dir gewünschten Ergebnis ab.
Aber bisher hast Du uns ja nicht wirklich verraten, was Dein Ziel ist und was Du erwartest. Noch hast Du verraten, welche der genannten Möglichkeiten Du ausprobiert hast. Ich nehme an, es waren nicht alle.
Thorsten Dörfler
Microsoft MVP Visual Basic- Als Antwort markiert Bernd Schlepütz Dienstag, 8. Dezember 2009 15:37