JTidy将html转换成xhtml

目前工作中在开发一个wap端的项目。虽然现在wap太老了。。没办法工作嘛。

不过还是遇到了很多问题。 由于wap端是用xhtml mp来开发,相对于html而言。 更佳规范更佳严谨。

上周遇到一个问题。 有一些数据是取数据库里的 clob字段。但是clob字段储存的是由word 转换成html的内容 。

里面的无论是标签还是样式 都不符合xhtml的标准。导致取出来的时候 根本前端根本显示不了。

周末在家,谷歌各种寻找 找到了 JTidy  html 解析器。带有将html转成xhtml的功能,而且配置简单,功能强大。

应该可以有效的解决我的问题。

另外通过这段代码的编码,发现我的I/O学的渣如狗啊!!!妈的 过一阵得恶补啊!

Jtidy 源码和jar包地址

下面附我的示例代码:


public String parseXhtml(String f_in){

      ByteArrayInputStream stream = new ByteArrayInputStream(f_in.getBytes());

      ByteArrayOutputStream  tidyOutStream = new ByteArrayOutputStream();
      //实例化Tidy对象
      Tidy tidy = new Tidy();
      //设置输入
      tidy.setInputEncoding("gb2312");
      //如果是true  不输出注释,警告和错误信息
      tidy.setQuiet(true);
      //设置输出
      tidy.setOutputEncoding("gb2312");
    //不显示警告信息
      tidy.setShowWarnings(false);
      //缩进适当的标签内容。
      tidy.setIndentContent(true);
      //内容缩进
      tidy.setSmartIndent(true);
      tidy.setIndentAttributes(false);
      //只输出body内部的内容
      tidy.setPrintBodyOnly(true);
      //多长换行
      tidy.setWraplen(1024);
      //输出为xhtml
      tidy.setXHTML(true);
      //去掉没用的标签
      tidy.setMakeClean(true);
      //清洗word2000的内容
      tidy.setWord2000(true);
      //设置错误输出信息
      tidy.setErrout(new PrintWriter(System.out));
      tidy.parse(stream, tidyOutStream);
      return tidyOutStream.toString();
}

下面在网上看到的一个网友兄弟发的博客内容列举了一些比较 常用的配置 (还有一大堆没列出来的, 附件里面有官网给出的配置含义,可以下载来参考 ):

add-xml-decl:是否输出“<?xml ... ?>” declaration

enclose-text:是否将所有<p>标签闭合 

enclose-block-text:给所有文本加上<p>标签,使其闭合

show-errors:是否输出错误 show-warnings:是否输出警告 quote-ampersand:是否将&输   出为&

quote-marks:是否将“输出为" quote-nbsp:是否将空格输出为 

indent:是否要缩进:block-level tags indent-spaces:每次缩进的空格数

wrap:每行最多字符数,超过则自动换行,如果为0则不自动换行

char-encoding:字符编码,类似的还有output-encoding、input-encoding

literal-attributes:是否保持attribute中的空白字符不变 force-output:遇到错误是否继续输出

numeric-entities:是否将字符输出为HTML字符实体(如<、>) doctype:是否输出DOCTYPE

tidy-mark:是否要输出Jtidy的<meta>标签 drop-font-tags:是否去掉<font>、<center>标签

clean:是否要清除掉多余的标签,这对处理从MS Word中复制到Html中的内容特别有效

Tidy里面这么多的配置属性,要是用户不小心设了一些互相矛盾的配置怎么办? Tidy会自动将低层次的配置调整以满足高层次配置的要求。

附博客地址

你可能感兴趣的:(JTidy将html转换成xhtml)