2 votes

Traitement HTML en Java: Convertir le HTML en d'autres formats

D'accord, il y a de nombreux analyseurs HTML/XML pour Java. Ce que je veux faire va un peu plus loin que simplement savoir comment l'analyser. Je veux filtrer le contenu et le mettre sous une forme adaptée.

Plus précisément, je veux conserver uniquement le texte et les images. Cependant, je veux aussi préserver une partie de la mise en forme du texte, comme : italique, gras, alignement, etc.

Tout cela est parce que j'essaie de mettre en place un convertisseur qui convertit du html vers un format spécifique que j'ai créé moi-même pour mes propres besoins.

Des idées ? Certainement, cela a déjà dû être fait de nombreuses fois auparavant.

5voto

BalusC Points 498232

Si votre intention est de nettoyer le contenu soumis par l'utilisateur contre une liste blanche sécurisée pour prévenir les attaques XSS, alors je vous suggère d'utiliser Jsoup pour cela. Il fournit une liste blanche intégrée. C'est aussi simple que :

String safeHtml = Jsoup.clean(unsafeHtml, Whitelist.basicWithImages());

Vous pouvez personnaliser la Whitelist comme décrit dans son javadoc.

Voir aussi :

2voto

Denis Tulskiy Points 10444

JTidy + XSLT?

1voto

George Profenza Points 24345

Jetez un coup d'œil à HTML Parser, cela pourrait être utile.

0voto

Albus Dumbledore Points 3097

O.K. Je pense l'avoir trouvé : lors de l'analyse de l'Element, je peux construire une javax.swing.text.html.InlineView, c'est-à-dire InlineElement ie = new InlineView(element) et ensuite obtenir les attributs comme ie.getAttributes.

D'accord. Si vous pouviez aider davantage, c'est-à-dire partager une expérience de première main, s'il vous plaît!

0voto

karthi Points 259

Vous pouvez utiliser un analyseur de DOM XML sous les packages org.w3c.dom et javax.xml, avec cela vous pouvez facilement analyser le document et obtenir le contenu du nœud

 Document doc = DocumentBuilder.parse(file);

puis obtenir les éléments en utilisant

NodeList nl = doc.getElementsByTagName("p"); // pour les balises de paragraphe

puis obtenir le contenu de la liste de nœuds, cela vous donnera tout le contenu dans la balise de paragraphe, de la même manière vous pouvez le faire pour n'importe quelle balise

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X