`

jdom解析xml抛出Invalid byte 2 of 2-byte UTF-8 sequence.异常的解决方法

 
阅读更多

最近做一个项目的时候,老是报com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Invalid byte 2 of 2-byte UTF-8 sequence.异常,经过仔细排查发现,是xml解析的时候出现了问题。

情况是这样:A用ansi编码xml文件,xml中不包含<?xml version="1.0" encoding="UTF-8"?>,缺省情况解析也是按照utf-8来解析。然后发送给B,而B在解析xml的时候,如果xml文件中没有中文就没事,但是如果有中文解析就出现这种问题。源代码如下所示:XML中包含了中文字符

 

 

	SAXBuilder builder=new SAXBuilder();
		String attrvalue="";
		File xmlfile=new File("susxml/test.xml");
		try {
			Document doc=builder.build(xmlfile);
			Element programme_tag=doc.getRootElement();
			List<Element> data=programme_tag.getChildren("DATA");
			if(data!=null && data.size()>0){
				Element element=data.get(0);
				attrvalue=element.getAttributeValue("NAME");
				System.out.println(attrvalue);
			}
		}catch(Exception ex){
			ex.printStackTrace();
		}

 此时抛出这样的异常com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Invalid byte 2 of 2-byte UTF-8 sequence.
 at com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.invalidByte(UTF8Reader.java:674)
 at com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.read(UTF8Reader.java:362)

 

改动代码

SAXBuilder builder=new SAXBuilder();
		String attrvalue="";
		File xmlfile=new File("susxml/test.xml");
		Reader xmlStreamReader=new InputStreamReader(new FileInputStream(xmlfile),"gbk");
		try {
			Document doc=builder.build(xmlStreamReader);
			Element programme_tag=doc.getRootElement();
			List<Element> data=programme_tag.getChildren("DATA");
			if(data!=null && data.size()>0){
				Element element=data.get(0);
				attrvalue=element.getAttributeValue("NAME");
				System.out.println(attrvalue);
			}
		}catch(Exception ex){
			ex.printStackTrace();
		}

 正确解析,异常不再出现。

分享到:
评论

相关推荐

    基于java的开发源码-用jdom解析xml.zip

    基于java的开发源码-用jdom解析xml.zip 基于java的开发源码-用jdom解析xml.zip 基于java的开发源码-用jdom解析xml.zip 基于java的开发源码-用jdom解析xml.zip 基于java的开发源码-用jdom解析xml.zip 基于java的开发...

    jstl.jar-jdom.jar-log4j-1.2.13.jar-ojdbc14._jar-standard.jar-commons-net-1.4.1.jar-xml-apis.jar-jdbc

    jdom.jar jstl.jar log4j-1.2.13.jar ojdbc14._jar standard.jar commons-net-1.4.1.jar xml-apis.jar jdbc2_0-stdext.jar

    jdom-1.1.zip jdom-1.1.jar jdom.jar jdom库 jdom操作xml

    `jdom-1.1.jar`则是JDOM-1.1的核心库文件,可以直接引入到Java项目中,以便进行XML操作。 在JDOM中,XML文档被表示为一个树形结构,主要由三个基本元素组成:`Element`代表XML元素,`Attribute`表示元素的属性,而`...

    使用JDOM解析XML文件

    本篇文章将深入探讨如何使用JDOM解析XML文件。 首先,我们需要理解JDOM的基本结构。JDOM通过Document对象表示整个XML文档,Element代表XML元素,Attribute表示元素属性,Text表示元素内的文本内容。这些类构成了...

    java jdom解析xml

    Java JDOM解析XML是Java开发中处理XML文档的一种方法,JDOM全称为Java Document Object Model,它是一个基于Java语言的API,用于创建、修改和读取XML文档。JDOM为XML处理提供了一种高效且方便的解决方案,尤其适用于...

    用jdom解析xml

    **Java与XML:JDOM解析XML的详细指南** 在Java编程中,XML(eXtensible Markup Language)是一种被广泛使用的数据交换格式,用于存储结构化数据。为了处理XML文档,开发者可以使用多种库,其中之一就是JDOM。JDOM是...

    json-lib-2.4-jdk15.jar所需全部JAR包_JSON_

    5. **XML解析库**:如Apache Xerces或JDOM,可能用于处理与XML相关的部分,因为JSON有时可以与XML相互转换。 6. ** Logging框架**:如log4j或commons-logging,用于日志记录,帮助调试和诊断问题。 在使用`json-lib...

    jdom解析xml文件

    **JDOM解析XML文件** XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于数据交换、配置文件和文档存储等领域。在Java中,JDOM(Java Document Object Model)是一个流行的选择来解析和操作...

    java利用jdom解析xml文件

    Java中的JDOM库是用于解析XML文档的一种强大的工具。它提供了简单、高效的API来读取、修改和创建XML文件。本篇文章将深入探讨如何利用JDOM解析XML文件,以及在这个过程中涉及的关键知识点。 首先,我们需要了解XML...

    利用JDOM解析xml文件

    - 请注意,生成的对象需要有无参构造器,否则`newInstance()`会抛出异常。 4. **实例化对象并设置属性**: - 从XML元素中提取属性值,根据属性名设置对象的成员变量。可以使用`Field`类的`setAccessible(true)`...

    用jdom解析xml文件

    JDOM是Java中一个专门用来解析XML的库,它提供了方便的API来读取、修改和创建XML文档。在这个例子中,我们将深入探讨如何使用JDOM解析XML文件,并进行遍历与构建。 首先,我们需要了解JDOM的基本概念。JDOM主要由三...

    jdom 读取XML 文件

    JDOM是Java中一个用于处理XML文档的库,它提供了一种高效且方便的方式来创建、读取、修改XML文件。本篇文章将深入探讨如何使用JDOM来读取XML文件。 首先,我们需要了解JDOM的基本概念。JDOM通过构建一棵DOM...

    Jdom解析XML

    JDOM的主要目标是提供一个完全基于Java的XML解决方案,使得XML文档可以被高效地映射到Java对象上。通过JDOM,开发者可以使用Java API来处理XML文档,无需了解底层的SAX或DOM解析器的工作原理。 **JDOM的基本元素** ...

    jdom解析xml文件小实例

    JDOM是Java领域中一个专门用来解析XML的库,它提供了一种高效且易于使用的API来处理XML文档。在这个小实例中,我们将深入探讨如何使用JDOM解析XML文件。 首先,我们需要引入JDOM的依赖。在Java项目中,如果你使用的...

    jaxen-1.1-beta-4.jar.zip212k.zip

    《Jaxen:XML查询与导航的利器》 在当今的软件开发中,XML作为一种标准的数据交换格式,广泛应用于各种应用程序之间。为了处理和解析XML文档,开发者常常需要借助一些库来实现对XML的查询和操作。Jaxen,正是这样一...

    jdom解析XML(修改为比较通用的方法)

    **JDOM解析XML详解** XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于数据交换、配置文件等领域。在Java中,有多种解析XML的库,其中之一就是JDOM。JDOM是一个专为Java设计的XML API,它...

    JDOM解析xml文档实例(自己编写,仅供参考)

    JDOM是Java中专门用来解析和操作XML的一个库,它提供了一种高效且方便的方式来处理XML文档。本实例将深入讲解如何使用JDOM进行XML解析。 首先,我们需要在项目中引入JDOM的类库。JDOM官方网站提供了不同版本的JDOM ...

    jdom2-2.0.6-API文档-中英对照版.zip

    赠送jar包:jdom2-2.0.6.jar; 赠送原API文档:jdom2-2.0.6-javadoc.jar; 赠送源代码:jdom2-2.0.6-sources.jar; 赠送Maven依赖信息文件:jdom2-2.0.6.pom; 包含翻译后的API文档:jdom2-2.0.6-javadoc-API文档-...

    jdom解析XML文件and把字符串解析成XML

    ### jdom解析XML文件及将字符串解析为XML #### 一、JDOM简介与环境搭建 JDOM(Java Document Object Model)是一种用Java语言编写的轻量级API,用于处理XML文档。它允许开发者轻松地读取、创建、修改XML文档,并将...

    JDOM解析XML

    在Java中,解析XML有多种方法,其中之一就是使用JDOM库。JDOM,全称Java Document Object Model,是专门为Java设计的一个解析XML的API,它提供了方便的构建和操作XML文档的方法。 JDOM的优势在于它完全基于Java,...

Global site tag (gtag.js) - Google Analytics