public static Document transferByNeko(InputStream stream, String charset)
{
if (stream == null)
return null; if(StringUtils.isEmpty(charset)){
charset = DEFAULT_CHARSET;
} //NEKOHTML的DOMParser会将html标签转化成大写,是否设置下面的配置都没有意义,解决办法是需要使用xerces的DOMParser
// DOMParser domParser = new DOMParser();
// Document doc = null;
// ByteArrayOutputStream byteOs = null;
// Writer writer = null;
// InputSource inputSource = null;
// DocumentType documentType = null;
// org.w3c.dom.Document document = null;
// DOMReader domReader = null;
// try {
// domParser.setProperty("http://cyberneko.org/html/properties/names/elems", "lower");
// domParser.setProperty("http://cyberneko.org/html/properties/names/attrs", "lower");
// domParser.setProperty("http://cyberneko.org/html/properties/default-encoding", "UTF-8");
//
// domParser.setFeature("http://xml.org/sax/features/namespaces", false);
// domParser.setFeature("http://cyberneko.org/html/features/balance-tags", true);
// domParser.setFeature("http://cyberneko.org/html/features/scanner/script/strip-comment-delims", false);
//
// byteOs = new ByteArrayOutputStream();
// writer = new Writer(byteOs, charset);
// XMLDocumentFilter domFilter[] = {
// writer
// };
// domParser.setProperty("http://cyberneko.org/html/properties/filters", domFilter);
// inputSource = new InputSource(new InputStreamReader(stream, Charset.forName(charset)));
// domParser.parse(inputSource);
// document = domParser.getDocument();
// documentType = document.getDoctype();
// if (documentType != null)
// document.removeChild(documentType);
// domReader = new DOMReader();
// doc = domReader.read(document);
// } catch (SAXNotRecognizedException e) {
// e.printStackTrace();
// } catch (SAXNotSupportedException e) {
// e.printStackTrace();
// } catch (UnsupportedEncodingException e) {
// e.printStackTrace();
// } catch (SAXException e) {
// e.printStackTrace();
// } catch (IOException e) {
// e.printStackTrace();
// }finally{
// IOUtils.closeQuietly(byteOs);
// IOUtils.closeQuietly(stream);
// } //采用xerces的DOMParser
Document doc = null;
DocumentType documentType = null;
org.w3c.dom.Document document = null;
DOMReader domReader = null;
ByteArrayOutputStream byteOs = null;
Writer writer = null;
InputSource inputSource = null;
try {
HTMLConfiguration htmlConfiguration = new HTMLConfiguration();
htmlConfiguration.setProperty("http://cyberneko.org/html/properties/names/elems","lower");
org.apache.xerces.parsers.DOMParser parser = new org.apache.xerces.parsers.DOMParser(htmlConfiguration);
inputSource = new InputSource(new InputStreamReader(stream, Charset.forName(charset)));
parser.parse(inputSource);
document = parser.getDocument();
documentType = document.getDoctype();
if (documentType != null)
document.removeChild(documentType);
domReader = new DOMReader();
doc = domReader.read(document);
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return doc;
}

nekohtml转换html时标签变大写的问题的更多相关文章

  1. Android学习之Button按钮在程序运行时全部变大写的处理

    问题: 在layout布局文件中,我们命名的按钮名称是“button1”,程序运行过后,在app上显示出来的是“BUTTON1”,先看源代码和效果: 按钮源代码: 运行效果: 解决办法: 方法一: 在 ...

  2. 三:C#对象转换Json时的一些高级(特殊)设置;

    导航目录: Newtonsoft.Json 概述 一:Newtonsoft.Json 支持序列化与反序列化的.net 对象类型:    二:C#对象.集合.DataTable与Json内容互转示例: ...

  3. PHP 将秒数转换成时分秒

    将秒数转换成时分秒,PHP提供了一个函数gmstrftime,不过该函数仅限于24小时内的秒数转换.对于超过24小时的秒数,我们应该怎么让其显示出来呢,例如 34:02:02 $seconds = 3 ...

  4. ytu 1938:首字母变大写(水题)

    首字母变大写 Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 110  Solved: 43[Submit][Status][Web Board] Desc ...

  5. PowerDesigner中转换物理模型时的命名转换

    原文:PowerDesigner中转换物理模型时的命名转换 最近在使用PowerDesigner建模数据库,在使用中积累了一些遇到的问题和解决办法,记录下来,希望对遇到同样问题的朋友有所帮助. 早 期 ...

  6. HDOJ2026首字母变大写

    首字母变大写 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Subm ...

  7. html标签data大写获取不到值:只能小写+横杠命名

    html标签data大写获取不到值:只能小写+横杠命名 例如: <i class="glyphicon glyphicon-question-sign" data-tip-t ...

  8. <!--转换office时需要此配置 --> <identity impersonate="true" />

    1.需要对Office 进行操作时 ,添加权限  <!--转换office时需要此配置 --> <identity impersonate="true" /> ...

  9. java把html标签字符转普通字符(反转换成html标签)(摘抄)

    下面是java把html标签字符转换,我用了spring 包中的 org.springframework.web.util.HtmlUtils 了解了源代码并且进步了使用,发现写得真不错...同时也可 ...

随机推荐

  1. andriod inputbox

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...

  2. google的开源项目总结

    转自http://www.feng5166.com/blog/424.html google的开源项目值得我们一用的,这些项目很有意义,甚至可以直接用在我们自己的工作上!学习编程的的一个比较好的方式就 ...

  3. 两篇整合Activiti Modeler到业务系统

    1. 无法进入editor. http://localhost:8080/YouPRJ/modeler/service/editor?id=2050,前提是这个id必需存在与act_re_model表 ...

  4. CSS3 @media 查询,根据屏幕screen大小调节前端显示;媒体查询方法的使用

    ------------------- 1.媒体查询方法在 css 里面这样写 -------------------- @media screen and (min-width: 320px) an ...

  5. python部署工具fabric

    两台机器:10.1.6.186.10.1.6.159.fabric部署在10.1.6.186上面 1  执行和1相同的任务,不过排除掉10.1.6.159这台机器 1 #!/usr/bin/pytho ...

  6. [转]SSIS高级转换任务—在Package中是用临时表是需要设置RetainSameConnection属性

    本文转自:http://www.cnblogs.com/tylerdonet/archive/2011/05/20/2052306.html 在上一个导入列这个例子中我们创建一个实际的表来存储文件路径 ...

  7. 玩转Google开源C++单元测试框架Google Test系列(gtest)(转)

    转自:http://www.cnblogs.com/coderzh/archive/2009/04/06/1426755.html 前段时间学习和了解了下Google的开源C++单元测试框架Googl ...

  8. mysql5.7.x 编译安装

    一.卸载mariadb [root@mysql5 ~]# rpm -qa mariadb* mariadb-libs--.el7.centos.x86_64 [root@template tools] ...

  9. HQL语句中数据类型转换,及hibernate中createQuery执行hql报错

    一.HQL语句中数据类型转换: 我们需要从数据库中取出序号最大的记录,想到的方法就是使用order by子句进行排序(desc倒序),然后取出第一个对象,可是当初设计数据库时(我们是在原来的数据库的基 ...

  10. sparkStreaming读取kafka的两种方式

    概述 Spark Streaming 支持多种实时输入源数据的读取,其中包括Kafka.flume.socket流等等.除了Kafka以外的实时输入源,由于我们的业务场景没有涉及,在此将不会讨论.本篇 ...