8
votes

Création d'un HTMLDocument à partir d'une chaîne de HTML (en Java)

Je travaille sur une méthode qui prend une chaîne de HTML et retourne un analogue

 javax.swing.text.html.HTMLDocument


0 commentaires

3 Réponses :


4
votes

Essayez d'utiliser HTMELLEDITORKIT CODE> classe. Il prend en charge l'analyse du contenu HTML pouvant être lu directement à partir de chaîne code> (par exemple via stringreader code>). Il semble y avoir un article sur la façon de faire cela.

Edit: Pour donner un exemple, je pense que cela pourrait être fait comme ceci (AFTRE Le code est exécuté, HTMLDOC CODE> doit contenir le document chargé ...): P>

Reader stringReader = new StringReader(string);
HTMLEditorKit htmlKit = new HTMLEditorKit();
HTMLDocument htmlDoc = (HTMLDocument) htmlKit.createDefaultDocument();
HTMLEditorKit.Parser parser = new ParserDelegator();
parser.parse(stringReader, htmlDoc.getReader(0), true);


3 commentaires

Cela semble correct, mais ne semble pas fonctionner. Considérons ce cas d'essai: TestMakeHtmLDocument () TestMakeHtmLDocument () Exception {String finale HTML = " \ N" + " \ n" + "\ n" + "

mon premier titre \ n "+" \ n "+"

mon premier paragraphe. \ n "+" \ n "+" \ n "+" "; final HTMLDOCUMUMENT HTMLDOCUMENT = myHTMLDOCumentLoader.makehtmldocument (HTML); htmldocument.dump (system.out); }


Il vide ceci:

[0,1] [0,1] [ ] [0,1] []


Je suis un peu peur que cela soit dû à la faiblesse du support HTML par HTMELDITORKIT ; Selon Javadoc, "Le support par défaut est fourni par cette classe, qui prend en charge la version 3.2 HTML (avec quelques extensions) et migre vers la version 4.0" - j'ai bien peur que vous n'avez besoin de gérer les étiquettes manuellement dans le rappel - Je ne sais pas si cela est meilleur que votre approche originale :(



0
votes

Vous pouvez essayer d'utiliser le htmldocument.setouterhtml méthode. Ajoutez simplement un élément aléatoire et remplacez-le ensuite avec votre chaîne HTML.


1 commentaires

N'oubliez pas que: 'Pour que cela fonctionne correctement, le document doit avoir un ensemble HTMELLEDITORKIT.PARSER. Ce sera le cas si le document a été créé à partir d'un HTMELLEDITORKIT via la méthode crééeFaultDocument. '



11
votes

Accepter avec Mouser mais une petite correction

Reader stringReader = new StringReader(string);
HTMLEditorKit htmlKit = new HTMLEditorKit();
HTMLDocument htmlDoc = (HTMLDocument) htmlKit.createDefaultDocument();
htmlKit.read(stringReader, htmlDoc, 0);


1 commentaires

Cela a vraiment travaillé pour moi, la réponse sélectionnée n'a pas.