java – 防止Jsoup.parse删除结束标记
发布时间:2020-12-15 04:37:01 所属栏目:Java 来源:网络整理
导读:我正在使用Jsoup.parse解析一段html. 其他一切都很棒,但我应该稍后在pdf转换器中解析这个HTML. 由于某种原因,Jsoup.parse删除了结束标记,而pdf-parser抛出了关于缺少关闭img标记的异常. Can't load the XML resource (using TRaX transformer). org.xml.sax.
我正在使用Jsoup.parse解析一段html.
其他一切都很棒,但我应该稍后在pdf转换器中解析这个HTML. 由于某种原因,Jsoup.parse删除了结束标记,而pdf-parser抛出了关于缺少关闭img标记的异常. Can't load the XML resource (using TRaX transformer). org.xml.sax.SAXParseException; lineNumber: 115; columnNumber: 4; The element type "img" must be terminated by the matching end-tag "</img>" 如何防止Jsoup.parse删除关闭的img标记? 例如这一行: <img src="C:pathtoimageimage.png"></img> 转向: <img src="C:pathtoimageimage.png"> 同样的情况: <img src="C:pathtoimageimage.png"/> 这是代码: 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(); } 这是上面方法中调用的tidyUpHTML方法: 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(" "," "); return fixedTags; } 解决方法
您的PDF转换器需要xhtml(因为它需要关闭img标记).设置Jsoup以输出到xhtml(xml).
org.jsoup.nodes.Document doc = Jsoup.parse(html); document.outputSettings().syntax( Document.OutputSettings.Syntax.xml); doc.select("a").unwrap(); String fixedTags = doc.html(); 见Is it possible to convert HTML into XHTML with Jsoup 1.8.1? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |