dom4j 的 DTD 验证,以及输出乱码问题解决方案
2009-11-02 15:57
471 查看
正常的 dom4j 读取 xml 的方式如下:
1. 如何忽略 DTD 的验证
2. 使用本地的DTD文件
3. 保存文件
SAXReader reader = new SAXReader(); reader.setEntityResolver(resolver); Document doc = reader.read(resource.getInputStream()); Element root = doc.getRootElement();
1. 如何忽略 DTD 的验证
SAXReader reader = new SAXReader(); reader.setEntityResolver(new EntityResolver () { public InputSource resolveEntity(String publicId, String systemId) throws SAXException, IOException { return new InputSource(new ByteArrayInputStream("<?xml version='1.0' encoding='utf-8'?>".getBytes())); } }); xmldoc = reader.read(new File(fileName)); xmlroot = xmldoc.getRootElement();
2. 使用本地的DTD文件
EntityResolver resolver = new EntityResolver() { public InputSource resolveEntity(String publicId, String systemId) throws SAXException, IOException { if (publicId.equals("-//Humpic Organization//DTD Walrus Statement Configuration 1.5//EN") || systemId.equals("http://www.humpic.com/walrus/dtds/walrus-statement-config-1.5.dtd") || systemId.endsWith("walrus-statement-config-1.5.dtd")) { InputStream in = this.getClass().getResourceAsStream("/META-INF/walrus-statement-config-1.5.dtd"); return new InputSource(in); } else if (publicId.equals("-//Humpic Organization//DTD Walrus Configuration 1.5//EN") || systemId.equals("http://www.humpic.com/walrus/dtds/walrus-config-1.5.dtd") || systemId.endsWith("walrus-config-1.5.dtd")) { InputStream in = this.getClass().getResourceAsStream("/META-INF/walrus-config-1.5.dtd"); return new InputSource(in); } return null; } }; SAXReader reader = new SAXReader(); reader.setEntityResolver(resolver); Document doc = reader.read(resource.getInputStream()); Element root = doc.getRootElement();
3. 保存文件
OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding(xmldoc.getXMLEncoding()); XMLWriter writer = new XMLWriter(new FileOutputStream(fileName), format); writer.write(xmldoc); writer.close();
相关文章推荐
- 浅析dom4j解析xml文件及其乱码问题以及与后台数据进行交互
- IDEA控制台输出中文乱码的问题及解决方案
- 关于idea日志和控制台如何输出日志及乱码问题解决方案
- 【Intellji 14.1.4下 中文注释乱码 & 控制台输出中文乱码 问题的解决方案
- adb logcat 输出乱码问题解决方案
- Ubuntu14.04中文乱码以及搜狗输入法无法正常输出中文的问题
- log4j 文件输出 和 数据库存储 以及数据库存储乱码问题
- jDom 和dom4j 输出的中文乱码的解决方案
- S3.1_Struts2_BasicConfiguration struts2主要配置文件和常用配置还有中文乱码问题以及简单验证
- Spring MVC使用@ResponseBody返回JSON数据406以及乱码问题解决方案
- ASP.net验证控件详解和按钮点击事件后验证控件的执行顺序问题以及在确认密码框为空,CompareValidator认为是合法的问题的解决方案
- 解决servlet中输出中文到浏览器以及post、get两种提交方法乱码问题
- dom4j 输出xml时乱码问题
- MySql中文乱码问题以及Incorrect string value: '\xF0\x9F...' 问题的解决方案
- Spring MVC使用@ResponseBody返回JSON数据406以及乱码问题解决方案
- dom4j 输出xml时乱码问题
- 解决json传递到前端时候的乱码问题;以及解决在servlet中如何输出页面的问题
- struts2实现下载+登录权限验证以及中文处理乱码问题
- window 7 +MyEclipse6.5 控制台中文输出乱码问题 (解决方案)
- 当xml中存在命名空间,dom4j解析以及写入xml文档时的乱码问题