In meiner Anwendung verwende ich JTextPane
, um einige Protokollinformationen anzuzeigen. Da ich einige spezielle Zeilen in diesem Text beleuchten möchte (zB die Fehlermeldungen), setze ich contentType
auf " text/html
". Auf diese Weise kann ich meinen Text formatieren.
Jetzt erstelle ich einen JButton, der den Inhalt dieses JTextPane
in die Zwischenablage kopiert. Dieser Teil ist einfach, aber mein Problem ist, dass wenn ich myTextPane.getText()
aufruft, bekomme ich den HTML-Code, wie:
anstatt nur den rohen Inhalt zu erhalten:
%Vor% Gibt es eine Möglichkeit, nur den Inhalt meiner JTextPane
im Klartext zu bekommen? Oder muss ich den HTML-Code selbst in Rohtext umwandeln?
Basierend auf der akzeptierten Antwort auf: Entfernen von HTML aus einer Java-Zeichenfolge
%Vor% Leicht modifizierte Version der Klasse Html2Text
, die in der Antwort gefunden wurde, mit der ich verlinkt bin
Wenn Sie eine feinkörnigere Handhabung benötigen, sollten Sie mehr von der Schnittstelle implementieren, die von HTMLEditorKit.ParserCallback
Sie müssen es leider selbst tun. Stellen Sie sich vor, wenn einige der Inhalte HTML-spezifisch wären, zB Bilder - die Textdarstellung ist unklar. Enthalten Sie alternativ Text oder nicht zum Beispiel.
(Ist RegExp zulässig? Dies wird nicht analysiert, oder?)
Nehmen Sie das Ergebnis getText () und verwenden Sie String.replaceAll (), um alle Tags zu filtern. Als trim (), um führende und nachfolgende Leerzeichen zu entfernen. Für die Whitespaces zwischen deinem ersten und letzten "Blabla" sehe ich keine allgemeine Lösung. Vielleicht kannst du den Rest um CRLF verschütten und alle Strings wieder trimmen.
(Ich bin kein Regexp-Experte - vielleicht kann jemand die Regexp bereitstellen und sich etwas Ansehen verdienen;))
Bearbeiten
.. Ich habe nur angenommen, dass du <
und >
nicht in deinem Text verwendest - sonst ... es ist eine Herausforderung.