最近在使用dom4j直接解析从远程发送过来的xml文件时,在使用dom4j读取输入流时出现了一些字符编码的错误。
源码如下:public void checkXML1(InputStream input){
SAXReader reader = new SAXReader();//input为从远程发送过来的输入流
Document doc = null;
try {
doc = reader.read(input);//这个出现字符编码错误
StringWriter buffer = new StringWriter();
OutputFormat format = new OutputFormat();
format.setEncoding("UTF-8");
format.setIndentSize(4);
format.setNewlines(true);
format.setTrimText(true);
format.setExpandEmptyElements(true);
HTMLWriter writer = new HTMLWriter(buffer,format);
writer.write(doc);
String xml = buffer.toString();
System.out.println("xml:"+xml);
} catch (DocumentException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
} catch (IOException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
}
错误具体信息如下:org.dom4j.DocumentException: Invalid byte 1 of 1-byte UTF-8 sequence. Nested exception: Invalid byte 1 of 1-byte UTF-8 sequence.有时会出现说文档中有(Unicode oxb2)编码错误。
解决办法:使用InputStreamReader包装此input输入流,源码如下:InputStreamReader inputReader = new InputStreamReader(input,"gbk");//对输入流进行转换成相应的编码就可以了。修改后的源码如下:public void checkXML1(InputStream input){
SAXReader reader = new SAXReader();
Document doc = null;
try {
InputStreamReader inputReader = new InputStreamReader(input,"gbk"); //编码转换
doc = reader.read(inputReader );
StringWriter buffer = new StringWriter();
OutputFormat format = new OutputFormat();
format.setEncoding("UTF-8");
format.setIndentSize(4);
format.setNewlines(true);
format.setTrimText(true);
format.setExpandEmptyElements(true);
HTMLWriter writer = new HTMLWriter(buffer,format);
writer.write(doc);
String xml = buffer.toString();
System.out.println("xml:"+xml);
} catch (DocumentException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
} catch (IOException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
}
分享到:
相关推荐
DOM4J库是Java中广泛使用的XML处理工具,它提供了SAX解析XML的功能。SAX(Simple API for XML)是一种事件驱动的解析器,适用于处理大型XML文档,因为它不需要将整个文档加载到内存中,因此在处理大文件时比DOM...
DOM4J提供了解析XML文档的方法,如`DocumentBuilder`可以用来构建一个`Document`对象,该对象代表整个XML文档。通过`Document`对象,我们可以访问XML的元素、属性和文本节点。例如,`Element`类表示XML元素,`...
例如,一个Java应用可能使用`log4j`记录用户登录、操作日志,同时利用`dom4j`解析XML配置文件以动态配置应用的行为。 在提供的压缩包中,`lo4j_jar包`包含了`log4j`的库文件,开发者可以直接引入到项目中使用。而`...
例如,使用DOM4J解析XML文件的基本步骤包括: - 引入DOM4J库 - 加载XML文件 - 创建Document对象 - 使用XPath表达式选择节点 - 读取或修改节点内容 2. SAX解析: 相对于DOM,SAX解析更适用于大型XML文件,因为...
DOM4J在运行时可能会利用SLF4J进行日志记录,例如,跟踪解析XML时的错误或调试信息。 在实际项目中,当DOM4J处理XML时遇到问题,如解析错误或性能瓶颈,开发者可以通过配置logback来获取详细的日志信息,帮助诊断...
开发者可以使用DOM4J进行XML解析、创建新文档、查询和修改现有文档,使得XML数据的处理变得更加简单。 SLF4J(Simple Logging Facade for Java)则是一个用于各种日志框架的抽象层,如java.util.logging、Logback和...
在Web开发领域,DOM4J、JSTL、BeanUtils和Log4j是四个非常重要的工具库,它们各自为开发者提供了强大的功能支持。下面将详细解释这些库的主要用途和使用方法。 1. DOM4J: DOM4J是一个Java库,用于处理XML文档。它...
1. **解析XML**:DOM4J提供了多种解析方式,包括SAX和DOM,允许开发者根据性能和内存消耗的需求选择合适的解析器。 2. **XPath支持**:DOM4J支持XPath表达式,使得查找XML文档中的特定节点变得非常方便,可以快速...
DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活且高效的API,使得XML的解析、创建、修改和查询变得更为简单。在本文中,我们将深入探讨如何使用DOM4J来验证XML文档对DTD(Document Type Definition)...
通过HttpClient发送HTTP请求,HttpCore处理底层的网络传输,Dom4j解析XML响应,而Log4j则记录整个过程中的信息,便于后期分析和调试。这样的组合在Web服务调用、数据爬取、API开发等场景中非常常见。
在实际应用中,dom4j常被用于配置文件的读写、XML数据的交换以及XML数据的解析和生成。 接下来是Axis,这是一个开源的Java Web服务框架,由Apache软件基金会维护。它的主要功能是帮助开发者创建、部署和消费Web服务...
在Word转PDF的过程中,可能需要使用Dom4j来解析Word文档中的XML结构,以便理解和处理文档的样式、布局等信息。 5. **标签:“word转p 解决pdf显 pdf变宽显”**: 这个标签表明了转换过程中可能会遇到的问题,即...
根据提供的标题、描述以及部分内容,本文将详细解析与dom4j相关的日志配置知识点,特别是针对log4j的日志配置细节进行深入分析。 ### dom4j 学习资料概述 在软件开发过程中,日志记录是一项重要的功能,它能够帮助...
这篇文档将深入探讨Java中如何使用jxl.jar库进行Excel文件的读写操作,解析XML文件,以及关于log4j的日志记录系统和文件的上传下载笔记。在现代的IT环境中,这些技能对于数据处理、日志管理和系统交互至关重要。 ...
DOM4J提供了丰富的接口和类,可以用来创建、解析、修改XML文档。它支持XPath查询,能够方便地读取和写入XML数据,是Java开发者处理XML文档时常用的库。在1.6.1这个版本中,可能包含了对XPath 1.0的支持,错误处理...
DOM4J在内存占用和性能方面都有很好的表现,是进行XML解析、操作和构建的理想选择。 2. **Common-FileUpload**: 这是Apache Commons的一个模块,用于处理HTTP协议中的多部分文件上传请求。它简化了在Web应用程序中...
Java的JDOM、DOM4J和SAX等库都是解析XML的常用工具。在这个案例中,DOM4J被用于解析和操作XML文档。DOM4J是一个强大的Java库,它提供了一种灵活的方式来处理XML,包括读取、写入、修改和查询XML文档。通过DOM4J,...
描述中提到的"dom4j-1.6.1.jar"是Java的一个XML处理库,它提供了一套全面的API来操作XML文档,包括解析、创建、修改和查询XML。SAXReader则是dom4j库中的一个类,用于基于SAX(Simple API for XML)方式来读取XML...
- 主要功能包括解析XML文档,创建新的XML结构,修改现有XML文档,以及XPath查询。 - `Element`是dom4j的核心类,代表XML的元素节点。 - `Document`表示整个XML文档,`Attribute`是元素的属性,`Namespace`处理...
在本项目中,"java实现点名系统" 是一个基于Java技术栈的软件应用,它利用XML作为数据存储,Swing构建用户界面,并且通过DOM4J库解析XML,以确保点名过程中不会重复点到同一名学生。下面将详细阐述这个系统的关键...