文档章节

org.xmlpull.v1.XmlPullParserException: Error parsing document. (position:line -1, column -1) 解决方案

ht896632
 ht896632
发布于 2016/03/02 14:07
字数 400
阅读 25
收藏 0
点赞 1
评论 0
org.xmlpull.v1.XmlPullParserException: Error parsing document. (position:line -1, column -1) caused by: org.apache.harmony.xml.ExpatParser$ParseException: At line 5, column 10: not well-formed (invalid token)
at org.apache.harmony.xml.ExpatPullParser$ByteDocument.flush(ExpatPullParser.java:959)
at org.apache.harmony.xml.ExpatPullParser$Document.pump(ExpatPullParser.java:770)
at org.apache.harmony.xml.ExpatPullParser$Document.dequeue(ExpatPullParser.java:814)
at org.apache.harmony.xml.ExpatPullParser.next(ExpatPullParser.java:303)
at cn.kafei.service.IdentityCardService.parseCardXml(IdentityCardService.java:85)
at cn.kafei.service.IdentityCardService.getCard(IdentityCardService.java:36)
at cn.kafei.test.XmlTest.testSendXML(XmlTest.java:34)
at java.lang.reflect.Method.invokeNative(Native Method)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:520)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1447)

造成原因分析:

一般来说,自己写的XML文件都是以UTF-8进行编码的,但是在有些网络上的XML使用的编码方式是GBK或者其他编码,而在XmlPullParser进行解析时,我尝试使用过GBK,但是还是报上面的错误,纠结了我好几个小时,最后终于找到解决方案,将GBK文件读到缓冲区,然后再以输入流的形式进行转换,最后在调用XmlPullParser的setInput方法时,将编码设置为UTF-8就可以了。

下面是完整的代码,已将这个解决办法封装为通用方法,直接调用即可。

/**
	 * 读取GBK XML文件
	 * @param inputStream
	 * @return
	 * @throws Exception
	 */
	public static ByteArrayInputStream readGBKXml(InputStream inputStream)
			throws Exception {
		// 获取返回的XML数据,因为服务器返回的是一个GBK编码的XML数据,所以这里以GBK编码来接收
		InputStreamReader reader = new InputStreamReader(inputStream, "gbk");
		BufferedReader br = new BufferedReader(reader);// 将InputStreamReader读到缓冲区中
		String temp;
		String result = "";
		while ((temp = br.readLine()) != null) {
			result = result + temp;
		}
		ByteArrayInputStream stream = new ByteArrayInputStream(
				result.getBytes());
		return stream;
	}
示例:

XmlPullParser pullParser = Xml.newPullParser();
		pullParser.setInput(readGBKXml(inputStream), "UTF-8");
//解析XML过程代码省略...


欢迎大家提出更多的解决方案,以便进行学习讨论。

转载请注明出处:


© 著作权归作者所有

共有 人打赏支持
ht896632
粉丝 35
博文 53
码字总数 31361
作品 0
闵行
高级程序员
chaosue/go-toml

go-toml Go library for the TOML format. This library supports TOML version v0.2.0 Features Go-toml provides the following features for using data parsed from TOML documents: Loa......

chaosue
2015/03/26
0
0
Dive into MySQL Replication

Dive into MySQL Replication Siddon's Blog2015-03-28131 阅读 mysql Dive into MySQL replication protocol Preface Let’s consider following scenario, we store huge data in MySQL an......

Siddon's Blog
2015/03/28
0
0
JPA基于hibernate

我用的hibernate4.2.21,当导入hibernate-annotation.jar时产生异常:java.lang.NoClassDefFoundError: org/hibernate/util/DTDEntityResolver;删除这个jar后,出现:javax.persistence.Per......

Howk
2015/12/25
226
2
ASP.NET Parser Error Message: Could not load type 'Web.Global'.

Server Error in '/myapp' Application. Parser ErrorDescription: An error occurred during the parsing of a resource required to service this request. Please review the following s......

微wx笑
2014/06/04
0
0
jqgrid动态添加列

项目中使用jqgrid展示数据,最近遇到这样一个问题,需要根据数据库中的关联关系动态生成列,解决方案如下: 前台代码: 后台代码: 获取数据的方法:

wen1512
2016/10/20
24
0
yaml文件不能被编译,main方法不能用?

Exception in thread "main" while parsing MappingNode in 'reader', line 2, column 1: roncoo: ^ Duplicate key: spring in 'reader', line 22, column 1:...

登录404
2017/02/09
45
1
XML 解析错误:XML 或文本声明不在实体的开头位置,有效的解决方法

昨天在测试APP接口返回XML数据的时候( http://my.oschina.net/woshixiaomayi/blog/518885),非常奇葩的爆出了这么一个错误: XML 解析错误:XML 或文本声明不在实体的开头 位置:http://ww...

嗜学如命的小蚂蚁
2015/10/20
1K
1
页面使用el表达式报错

@JFinal 你好,想跟你请教个问题:我在页面用el表达式输出内容,为什么会报这个错误呀?已经引了freemarker的jar包了。 Error executing FreeMarker template FreeMarker template error: T...

毛笔写代码
2016/04/21
475
1
使用Oracle的DBMS_SQL包执行动态SQL语句

引用自:http://blog.csdn.net/ggjjzhzz/archive/2005/10/17/507880.aspx 在某些场合下,存储过程或触发器里的SQL语句需要动态生成。Oracle的DBMSSQL包可以用来执行动态SQL语句。本文通过一个...

jimbuster
2007/09/26
0
0
Parsing Error xml.parsers.expat.ExpatError: not well-formed (invalid token): line X column Y

Parsing Error xml.parsers.expat.ExpatError: not well-formed (invalid token): line X column Y 解决办法: xml格式化: 把文件用编辑器打开,复制剪贴到http://web.chacuo.net/formatxml......

coord
02/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式 Factory工厂模式 Singleton单例模式 Delegate委派模式 Strategy策略模式 Prototype原型模式 Template模板模式 Spring5 beans 接口实例化 代理Bean操作 ...

小致dad
17分钟前
0
0
SpringBoot | 第十章:Swagger2的集成和使用

前言 前一章节介绍了mybatisPlus的集成和简单使用,本章节开始接着上一章节的用户表,进行Swagger2的集成。现在都奉行前后端分离开发和微服务大行其道,分微服务及前后端分离后,前后端开发的...

oKong
今天
9
0
Python 最小二乘法 拟合 二次曲线

Python 二次拟合 随机生成数据,并且加上噪声干扰 构造需要拟合的函数形式,使用最小二乘法进行拟合 输出拟合后的参数 将拟合后的函数与原始数据绘图后进行对比 import numpy as npimport...

阿豪boy
今天
12
0
云拿 无人便利店

附近(上海市-航南路)开了家无人便利店.特意进去体验了一下.下面把自己看到的跟大家分享下. 经得现场工作人员同意后拍了几张照片.从外面看是这样.店门口的指导里强调:不要一次扫码多个人进入....

周翔
昨天
1
0
Java设计模式学习之工厂模式

在Java(或者叫做面向对象语言)的世界中,工厂模式被广泛应用于项目中,也许你并没有听说过,不过也许你已经在使用了。 简单来说,工厂模式的出现源于增加程序序的可扩展性,降低耦合度。之...

路小磊
昨天
203
1
npm profile 新功能介绍

转载地址 npm profile 新功能介绍 npm新版本新推来一个功能,npm profile,这个可以更改自己简介信息的命令,以后可以不用去登录网站来修改自己的简介了 具体的这个功能的支持大概是在6这个版...

durban
昨天
1
0
Serial2Ethernet Bi-redirection

Serial Tool Serial Tool is a utility for developing serial communications, custom protocols or device testing. You can set up bytes to send accordingly to your protocol and save......

zungyiu
昨天
1
0
python里求解物理学上的双弹簧质能系统

物理的模型如下: 在这个系统里有两个物体,它们的质量分别是m1和m2,被两个弹簧连接在一起,伸缩系统为k1和k2,左端固定。假定没有外力时,两个弹簧的长度为L1和L2。 由于两物体有重力,那么...

wangxuwei
昨天
0
0
apolloxlua 介绍

##项目介绍 apolloxlua 目前支持javascript到lua的翻译。可以在openresty和luajit里使用。这个工具分为两种模式, 一种是web模式,可以通过网页使用。另外一种是tool模式, 通常作为大规模翻...

钟元OSS
昨天
2
0
Mybatis入门

简介: 定义:Mybatis是一个支持普通SQL查询、存储过程和高级映射的持久层框架。 途径:MyBatis通过XML文件或者注解的形式配置映射,实现数据库查询。 特性:动态SQL语句。 文件结构:Mybat...

霍淇滨
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部