最近做一个项目的时候,老是报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.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.jar`则是JDOM-1.1的核心库文件,可以直接引入到Java项目中,以便进行XML操作。 在JDOM中,XML文档被表示为一个树形结构,主要由三个基本元素组成:`Element`代表XML元素,`Attribute`表示元素的属性,而`...
本篇文章将深入探讨如何使用JDOM解析XML文件。 首先,我们需要理解JDOM的基本结构。JDOM通过Document对象表示整个XML文档,Element代表XML元素,Attribute表示元素属性,Text表示元素内的文本内容。这些类构成了...
Java JDOM解析XML是Java开发中处理XML文档的一种方法,JDOM全称为Java Document Object Model,它是一个基于Java语言的API,用于创建、修改和读取XML文档。JDOM为XML处理提供了一种高效且方便的解决方案,尤其适用于...
5. **XML解析库**:如Apache Xerces或JDOM,可能用于处理与XML相关的部分,因为JSON有时可以与XML相互转换。 6. ** Logging框架**:如log4j或commons-logging,用于日志记录,帮助调试和诊断问题。 在使用`json-lib...
**Java与XML:JDOM解析XML的详细指南** 在Java编程中,XML(eXtensible Markup Language)是一种被广泛使用的数据交换格式,用于存储结构化数据。为了处理XML文档,开发者可以使用多种库,其中之一就是JDOM。JDOM是...
**JDOM解析XML文件** XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于数据交换、配置文件和文档存储等领域。在Java中,JDOM(Java Document Object Model)是一个流行的选择来解析和操作...
Java中的JDOM库是用于解析XML文档的一种强大的工具。它提供了简单、高效的API来读取、修改和创建XML文件。本篇文章将深入探讨如何利用JDOM解析XML文件,以及在这个过程中涉及的关键知识点。 首先,我们需要了解XML...
- 请注意,生成的对象需要有无参构造器,否则`newInstance()`会抛出异常。 4. **实例化对象并设置属性**: - 从XML元素中提取属性值,根据属性名设置对象的成员变量。可以使用`Field`类的`setAccessible(true)`...
JDOM是Java中一个专门用来解析XML的库,它提供了方便的API来读取、修改和创建XML文档。在这个例子中,我们将深入探讨如何使用JDOM解析XML文件,并进行遍历与构建。 首先,我们需要了解JDOM的基本概念。JDOM主要由三...
JDOM是Java中一个用于处理XML文档的库,它提供了一种高效且方便的方式来创建、读取、修改XML文件。本篇文章将深入探讨如何使用JDOM来读取XML文件。 首先,我们需要了解JDOM的基本概念。JDOM通过构建一棵DOM...
jdom-1.0.jar,jdom-1.0.jar,jdom-1.0.jar,jdom-1.0.jar,jdom-1.0.jar
JDOM的主要目标是提供一个完全基于Java的XML解决方案,使得XML文档可以被高效地映射到Java对象上。通过JDOM,开发者可以使用Java API来处理XML文档,无需了解底层的SAX或DOM解析器的工作原理。 **JDOM的基本元素** ...
JDOM是Java领域中一个专门用来解析XML的库,它提供了一种高效且易于使用的API来处理XML文档。在这个小实例中,我们将深入探讨如何使用JDOM解析XML文件。 首先,我们需要引入JDOM的依赖。在Java项目中,如果你使用的...
《Jaxen:XML查询与导航的利器》 在当今的软件开发中,XML作为一种标准的数据交换格式,广泛应用于各种应用程序之间。为了处理和解析XML文档,开发者常常需要借助一些库来实现对XML的查询和操作。Jaxen,正是这样一...
**JDOM解析XML详解** XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于数据交换、配置文件等领域。在Java中,有多种解析XML的库,其中之一就是JDOM。JDOM是一个专为Java设计的XML API,它...
使用dom4j解析XML时,要快速获取某个节点的数据,使用XPath是个不错的方法,dom4j的快速手册里也建议使用这种方式 执行时却抛出以下异常: Exception in thread "main" java.lang.NoClassDefFoundError: org/jaxen...
JDOM是Java中专门用来解析和操作XML的一个库,它提供了一种高效且方便的方式来处理XML文档。本实例将深入讲解如何使用JDOM进行XML解析。 首先,我们需要在项目中引入JDOM的类库。JDOM官方网站提供了不同版本的JDOM ...
赠送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文档-...