2016-12-08 7 views
1

Je suis en train d'analyser un morceau de HTML avec Jsoup.parse.Empêcher Jsoup.parse de supprimer la balise de fermeture</img>

Tout le reste est génial, mais je suis supposé analyser ce code HTML plus tard dans un convertisseur PDF.

Pour une raison quelconque, Jsoup.parse supprime la balise de fermeture et l'analyseur pdf lève une exception à propos de la balise img de fermeture manquante. Comment empêcher Jsoup.parse de supprimer la balise img de fermeture?

Par exemple cette ligne:

<img src="C:\path\to\image\image.png"></img> 

se tourne vers:

<img src="C:\path\to\image\image.png"> 

même se produit avec:

<img src="C:\path\to\image\image.png"/> 

Voici le code:

private void createPdf(File file, String content) throws IOException, DocumentException { 
     OutputStream os = new FileOutputStream(file); 
      content = tidyUpHTML(content); 
      ITextRenderer renderer = new ITextRenderer(); 
      renderer.setDocumentFromString(content); 
      renderer.layout(); 
      renderer.createPDF(os); 
     os.close(); 
    } 

Voici le tidyUpHTML méthode qui est appelée dans la méthode ci-dessus:

private String tidyUpHTML(String html) { 
    org.jsoup.nodes.Document doc = Jsoup.parse(html); 
    doc.select("a").unwrap(); 
    String fixedTags = doc.toString().replace("<br>", "<br />"); 
    fixedTags = fixedTags.replace("<hr>", "<hr />"); 
    fixedTags = fixedTags.replaceAll("&nbsp;","&#160;"); 
    return fixedTags; 
} 
+0

Pourriez-vous s'il vous plaît envoyer votre code d'analyse syntaxique Jsoup, afin que nous puissions voir pourquoi son retrait de la balise de fermeture. – SachinSarawgi

+0

@SachinSarawgi, mis à jour –

Répondre

4

Votre convertisseur PDF attend xhtml (puisqu'il attend la fermeture balise img). Configurez Jsoup pour qu'il renvoie vers xhtml (xml) à la place.

org.jsoup.nodes.Document doc = Jsoup.parse(html); 
document.outputSettings().syntax(Document.OutputSettings.Syntax.xml); 
doc.select("a").unwrap(); 
String fixedTags = doc.html(); 

Voir Is it possible to convert HTML into XHTML with Jsoup 1.8.1?