文档章节

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

ht896632
 ht896632
发布于 2016/03/02 14:07
字数 400
阅读 26
收藏 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
粉丝 37
博文 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
X-XSS-Protection设置问题

页面出现Error parsing header X-XSS-Protection: X-XSS-Protection: 1; mode=block: expected token to be 0 or 1 at character position 0. The default protections will be applied。请问......

jaav
2018/08/21
343
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
《Oracle PL/SQL开发指南》学习笔记30——源码调试——错误管理(第一部分,Error Management)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hpdlzu80100/article/details/84780698 异常类型(编译时错误、运行时错误) 1. 编译时错误 Compilation Erro...

预见未来to50
2018/12/03
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
297
2

没有更多内容

加载失败,请刷新页面

加载更多

苏宁金融红包系统大促海量流量背后的技术支撑

发红包是目前各大互联网公司最常用的营销手段之一,它形式多样,内容丰富。2016 年底苏宁金融开启了红包系统及相关系统的项目开发。 本文将对苏宁金融红包系统的架构部署方式、演变过程、技术...

架构师springboot
9分钟前
2
0
Linux恢复误删除的文件或者目录

2017 年 2 月 1 日 GitLab 数据库被误删引起了广大争议. linux不像windows有个回收站,使用rm -rf *基本上文件是找不回来的。 那么问题来了: 对于linux下误删的文件,我们是否真的无法通过软...

Goopand
10分钟前
0
0
从NeurIPS 2018看AI发展路线!

摘要: 从NeurIPS 2018看AI发展路线! 去年9月份的时候,我发表过一份技术报告,阐述了我认为人工智能最重要的挑战,大概有以下四个方面: ·可伸缩性(Scalability)计算或存储的成本不与神...

阿里云官方博客
11分钟前
0
0
快速入门:selenium自动化测试+ubuntu系统+php语言+firefox/chrome浏览器

前言 selenium可用于界面UI自动化测试,因此也可用于来做一些自动化方面的事情。下面简单总结概括一下,对于一位新手,学习和使用selenium的基本过程。 本文只要针对:selenium自动化测试+ub...

暗夜在火星
13分钟前
1
0
List集合知识总结

转载: 一:集合的概念 集合:保存数量不确定的数据,以及保存具有映射关系的数据的容器,简单的理解就是用于存储数量不等的多个对象的容器。 集合和数组不一样,数组元素既可以是基本类型的值...

小橙子的曼曼
14分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部