`
maohua441883758
  • 浏览: 1141 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

dom4j解析xml错误记录

XML 
阅读更多

最近在使用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下的sax解析xml

    DOM4J库是Java中广泛使用的XML处理工具,它提供了SAX解析XML的功能。SAX(Simple API for XML)是一种事件驱动的解析器,适用于处理大型XML文档,因为它不需要将整个文档加载到内存中,因此在处理大文件时比DOM...

    dom4j将xml文件导入到数据库所需要的包

    DOM4J提供了解析XML文档的方法,如`DocumentBuilder`可以用来构建一个`Document`对象,该对象代表整个XML文档。通过`Document`对象,我们可以访问XML的元素、属性和文本节点。例如,`Element`类表示XML元素,`...

    log4j和dom4j插件

    例如,一个Java应用可能使用`log4j`记录用户登录、操作日志,同时利用`dom4j`解析XML配置文件以动态配置应用的行为。 在提供的压缩包中,`lo4j_jar包`包含了`log4j`的库文件,开发者可以直接引入到项目中使用。而`...

    比较通用的xml解析方法

    例如,使用DOM4J解析XML文件的基本步骤包括: - 引入DOM4J库 - 加载XML文件 - 创建Document对象 - 使用XPath表达式选择节点 - 读取或修改节点内容 2. SAX解析: 相对于DOM,SAX解析更适用于大型XML文件,因为...

    dom4j-2.1.4.zip

    DOM4J在运行时可能会利用SLF4J进行日志记录,例如,跟踪解析XML时的错误或调试信息。 在实际项目中,当DOM4J处理XML时遇到问题,如解析错误或性能瓶颈,开发者可以通过配置logback来获取详细的日志信息,帮助诊断...

    dom4j.jar slf4j.jar log4j.jar 包下载

    开发者可以使用DOM4J进行XML解析、创建新文档、查询和修改现有文档,使得XML数据的处理变得更加简单。 SLF4J(Simple Logging Facade for Java)则是一个用于各种日志框架的抽象层,如java.util.logging、Logback和...

    dom4j+jstl+beanUtils+log4j

    在Web开发领域,DOM4J、JSTL、BeanUtils和Log4j是四个非常重要的工具库,它们各自为开发者提供了强大的功能支持。下面将详细解释这些库的主要用途和使用方法。 1. DOM4J: DOM4J是一个Java库,用于处理XML文档。它...

    dom4j以及axis所需jar包

    1. **解析XML**:DOM4J提供了多种解析方式,包括SAX和DOM,允许开发者根据性能和内存消耗的需求选择合适的解析器。 2. **XPath支持**:DOM4J支持XPath表达式,使得查找XML文档中的特定节点变得非常方便,可以快速...

    使用DOM4J验证DTD最简单的方法

    DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活且高效的API,使得XML的解析、创建、修改和查询变得更为简单。在本文中,我们将深入探讨如何使用DOM4J来验证XML文档对DTD(Document Type Definition)...

    httpclient-4.4.httpcore-4.4.dom4j-1.4.log4j-1.2.16.rar

    通过HttpClient发送HTTP请求,HttpCore处理底层的网络传输,Dom4j解析XML响应,而Log4j则记录整个过程中的信息,便于后期分析和调试。这样的组合在Web服务调用、数据爬取、API开发等场景中非常常见。

    dom4j_完整Jar包和axis.jar及依赖jar包

    在实际应用中,dom4j常被用于配置文件的读写、XML数据的交换以及XML数据的解析和生成。 接下来是Axis,这是一个开源的Java Web服务框架,由Apache软件基金会维护。它的主要功能是帮助开发者创建、部署和消费Web服务...

    java word转pdf jacob.jar、aspectjweaver.jar、poi、dom4j

    在Word转PDF的过程中,可能需要使用Dom4j来解析Word文档中的XML结构,以便理解和处理文档的样式、布局等信息。 5. **标签:“word转p 解决pdf显 pdf变宽显”**: 这个标签表明了转换过程中可能会遇到的问题,即...

    dom4j 学习资料

    根据提供的标题、描述以及部分内容,本文将详细解析与dom4j相关的日志配置知识点,特别是针对log4j的日志配置细节进行深入分析。 ### dom4j 学习资料概述 在软件开发过程中,日志记录是一项重要的功能,它能够帮助...

    读写Excel jxl.jar 读xml (log4j 文件上传下载笔记).rar

    这篇文档将深入探讨Java中如何使用jxl.jar库进行Excel文件的读写操作,解析XML文件,以及关于log4j的日志记录系统和文件的上传下载笔记。在现代的IT环境中,这些技能对于数据处理、日志管理和系统交互至关重要。 ...

    sqlserver数据库连接驱动,c.tld,dom4j-1.6.1.jar,dwr.jar

    DOM4J提供了丰富的接口和类,可以用来创建、解析、修改XML文档。它支持XPath查询,能够方便地读取和写入XML数据,是Java开发者处理XML文档时常用的库。在1.6.1这个版本中,可能包含了对XPath 1.0的支持,错误处理...

    dom4j、common-fileupload、hibernate、jdom、log4j、proxool、spring、struts、webwork等工具、框架源码

    DOM4J在内存占用和性能方面都有很好的表现,是进行XML解析、操作和构建的理想选择。 2. **Common-FileUpload**: 这是Apache Commons的一个模块,用于处理HTTP协议中的多部分文件上传请求。它简化了在Web应用程序中...

    注册与登录_基于xml格式的存储.zip

    Java的JDOM、DOM4J和SAX等库都是解析XML的常用工具。在这个案例中,DOM4J被用于解析和操作XML文档。DOM4J是一个强大的Java库,它提供了一种灵活的方式来处理XML,包括读取、写入、修改和查询XML文档。通过DOM4J,...

    log4j的jar包

    描述中提到的"dom4j-1.6.1.jar"是Java的一个XML处理库,它提供了一套全面的API来操作XML文档,包括解析、创建、修改和查询XML。SAXReader则是dom4j库中的一个类,用于基于SAX(Simple API for XML)方式来读取XML...

    lo4j详细讲解及详细文档

    - 主要功能包括解析XML文档,创建新的XML结构,修改现有XML文档,以及XPath查询。 - `Element`是dom4j的核心类,代表XML的元素节点。 - `Document`表示整个XML文档,`Attribute`是元素的属性,`Namespace`处理...

    java实现点名系统

    在本项目中,"java实现点名系统" 是一个基于Java技术栈的软件应用,它利用XML作为数据存储,Swing构建用户界面,并且通过DOM4J库解析XML,以确保点名过程中不会重复点到同一名学生。下面将详细阐述这个系统的关键...

Global site tag (gtag.js) - Google Analytics