是否可以使用 Jsoup 1.8.1 将 HTML 转换为 XHTML?
Posted
技术标签:
【中文标题】是否可以使用 Jsoup 1.8.1 将 HTML 转换为 XHTML?【英文标题】:Is it possible to convert HTML into XHTML with Jsoup 1.8.1? 【发布时间】:2015-05-19 04:08:21 【问题描述】:String body = "<br>";
Document document = Jsoup.parseBodyFragment(body);
document.outputSettings().escapeMode(EscapeMode.xhtml);
String str = document.body().html();
System.out.println(str);
期望:<br />
结果:<br>
Jsoup 可以将值 HTML 转换为 XHTML 吗?
【问题讨论】:
奇怪,它对我来说很好用。我使用1.7.2
版本对其进行了测试。
不适合我,我正在使用1.8.1
【参考方案1】:
见Document.OutputSettings.Syntax.xml
:
private String toXHTML( String html )
final Document document = Jsoup.parse(html);
document.outputSettings().syntax(Document.OutputSettings.Syntax.xml);
return document.html();
【讨论】:
您很可能还想:document.outputSettings().escapeMode(org.jsoup.nodes.Entities.EscapeMode.xhtml)
将 &nbsp;
转换为 &#xa0;
— xhtml 中不允许使用前者。【参考方案2】:
你应该告诉那个语法你想把字符串留在 HTML 或 XML 中。
public String parserXHtml(String html)
org.jsoup.nodes.Document document = Jsoup.parseBodyFragment(html);
document.outputSettings().syntax(org.jsoup.nodes.Document.OutputSettings.Syntax.xml); //This will ensure the validity
document.outputSettings().charset("UTF-8");
return document.toString();
【讨论】:
【参考方案3】:您可以使用 JTidy API 来执行此操作。使用 jtidy-r938.jar
可以使用以下方法从html中获取xhtml
public static String getXHTMLFromHTML(String inputFile,
String outputFile) throws Exception
File file = new File(inputFile);
FileOutputStream fos = null;
InputStream is = null;
try
fos = new FileOutputStream(outputFile);
is = new FileInputStream(file);
Tidy tidy = new Tidy();
tidy.setXHTML(true);
tidy.parse(is, fos);
catch (FileNotFoundException e)
e.printStackTrace();
finally
if(fos != null)
try
fos.close();
catch (IOException e)
fos = null;
fos = null;
if(is != null)
try
is.close();
catch (IOException e)
is = null;
is = null;
return outputFile;
【讨论】:
以上是关于是否可以使用 Jsoup 1.8.1 将 HTML 转换为 XHTML?的主要内容,如果未能解决你的问题,请参考以下文章