<p>目前工做中在开发一个wap端的项目。虽然如今wap太老了。。没办法工做嘛。</p> <p>不过仍是遇到了不少问题。 因为wap端是用xhtml mp来开发,相对于html而言。 更佳规范更佳严谨。</p> <p>上周遇到一个问题。 有一些数据是取数据库里的 clob字段。可是clob字段储存的是由word 转换成html的内容 。</p> <p>里面的不管是标签仍是样式 都不符合xhtml的标准。致使取出来的时候 根本前端根本显示不了。</p> <p>周末在家,谷歌各类寻找 找到了 JTidy  html 解析器。带有将html转成xhtml的功能,并且配置简单,功能强大。</p> <p>应该能够有效的解决个人问题。</p> <p>另外经过这段代码的编码,发现个人I/O学的渣如狗啊!!!妈的 过一阵得恶补啊!</p> <p><a href="http://sourceforge.net/projects/jtidy/">Jtidy 源码和jar包地址</a></p> <p>下面附个人示例代码:</p>html
<!-- 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:是否将&输 出为& 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会自动将低层次的配置调整以知足高层次配置的要求。java
附博客地址数据库