Erstellen eines HTMLDocument aus einem HTML-String (in Java)
Arbeite ich an einer Methode, die einen String von HTML und gibt eine analoge
javax.swing.text.html.HTMLDocument
Was ist der effizienteste Weg, dies zu tun?
Dem Weg, ich bin derzeit dabei besteht in der Verwendung eines SAX-parser zum Parsen der HTML-string. Ich verfolgen, wenn ich drücken Sie open-tags (z.B. <i>). Wenn ich drücken Sie die entsprechende schließen-Tags (z.B. </i>), ich Wende die Kursiv-Stil, die Charaktere, die ich getroffen habe in zwischen.
Diese funktioniert sicherlich, aber es ist nicht schnell genug. Gibt es einen schnelleren Weg, dies zu tun?
InformationsquelleAutor Paul Reiners | 2011-07-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen
HtmlEditorKit
Klasse. Es unterstützt das Parsen von HTML-Inhalten, die direkt gelesen werden können vonString
(z.B. durchStringReader
). Es scheint zu sein, einen Artikel darüber, wie dies zu tun.Edit: um ein Beispiel Zu geben, im Grunde denke ich, dass es getan werden könnte, wie dies (aftrer der code ausgeführt wird,
htmlDoc
sollte die geladene Dokument...):Es steckt dies:<html-name=html > <body name=body > <p margin-top=0 resolver=NamedStyle:default {name=default} name=p > <content-name=content > [0,1][ ] < - bidi-root> < - bidi-Ebene bidiLevel=0 > [0,1][ ]
Ich bin ein wenig-bisschen Angst, dass dies wegen der Schwäche von HTML-Unterstützung durch
HTMLEditorKit
; laut javadoc, "Der Standard-support wird von dieser Klasse unterstützt, die die HTML-version 3.2 (mit einigen Erweiterungen), und ist eine Migration in Richtung version 4.0" -- ich fürchte, Sie müssen behandeln Sie die tags manuell in der callback -- nicht sicher, ob dies irgendwie besser als dein ursprünglicher Ansatz 🙁Ich kann bestätigen, das funktioniert nicht
InformationsquelleAutor mouser
Stimmen mit mouser aber eine kleine Korrektur
InformationsquelleAutor StanislavL
Könnten Sie versuchen, verwenden Sie die
HTMLDocument.setOuterHTML
Methode. Fügen Sie einfach ein zufälliges element und ersetzen Sie es danach mit Ihrem HTML-string.InformationsquelleAutor nfechner