目前工作中在开发一个wap端的项目。虽然现在wap太老了。。没办法工作嘛。
不过还是遇到了很多问题。 由于wap端是用xhtml mp来开发,相对于html而言。 更佳规范更佳严谨。
上周遇到一个问题。 有一些数据是取数据库里的 clob字段。但是clob字段储存的是由word 转换成html的内容 。
里面的无论是标签还是样式 都不符合xhtml的标准。导致取出来的时候 根本前端根本显示不了。
周末在家,谷歌各种寻找 找到了 JTidy html 解析器。带有将html转成xhtml的功能,而且配置简单,功能强大。
应该可以有效的解决我的问题。
另外通过这段代码的编码,发现我的I/O学的渣如狗啊!!!妈的 过一阵得恶补啊!
下面附我的示例代码:
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:是否将所有
标签闭合
enclose-block-text:给所有文本加上
标签,使其闭合
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的标签 drop-font-tags:是否去掉、
clean:是否要清除掉多余的标签,这对处理从MS Word中复制到Html中的内容特别有效
Tidy里面这么多的配置属性,要是用户不小心设了一些互相矛盾的配置怎么办? Tidy会自动将低层次的配置调整以满足高层次配置的要求。
来源:oschina
链接:https://my.oschina.net/u/727667/blog/140055