JTidy将html转换成xhtml

<p>目前工作中在开发一个wap端的项目。虽然现在wap太老了。。没办法工作嘛。</p> <p>不过还是遇到了很多问题。 由于wap端是用xhtml mp来开发,相对于html而言。 更佳规范更佳严谨。</p> <p>上周遇到一个问题。 有一些数据是取数据库里的 clob字段。但是clob字段储存的是由word 转换成html的内容 。</p> <p>里面的无论是标签还是样式 都不符合xhtml的标准。导致取出来的时候 根本前端根本显示不了。</p> <p>周末在家,谷歌各种寻找 找到了 JTidy&#160; html 解析器。带有将html转成xhtml的功能,而且配置简单,功能强大。</p> <p>应该可以有效的解决我的问题。</p> <p>另外通过这段代码的编码,发现我的I/O学的渣如狗啊!!!妈的 过一阵得恶补啊!</p> <p><a href="http://sourceforge.net/projects/jtidy/">Jtidy 源码和jar包地址</a></p> <p>下面附我的示例代码:</p>

<!-- lang: java -->
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:是否将&输   出为&amp;

quote-marks:是否将“输出为&quot; quote-nbsp:是否将空格输出为&nbsp;

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

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

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

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

numeric-entities:是否将字符输出为HTML字符实体(如&lt;、&gt;) doctype:是否输出DOCTYPE

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

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

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

附博客地址

转载于:https://my.oschina.net/ren2881971/blog/140055

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值