前两天在写一个新闻资讯客户端时,利用Pull从web服务器返回的xml数据时,报了下面的错误消息,直到现在才找到错误的原因。就因为这个小错误我写了很多种单元测试的方法,从web返回的xml数据是正确的,能在浏览器上进行查看,可一到Pull解析时,就报了如下的错误消息:
org.xmlpull.v1.XmlPullParserException: Error parsing document. (position:line -1, column -1) caused by: org.apache.harmony.xml.ExpatParser$ParseException: At line 3, column 0: XML or text declaration not at start of entity
at org.apache.harmony.xml.ExpatPullParser$ByteDocument.flush(ExpatPullParser.java:958)at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1448)
这样的异常消息,以前不是没有见过,以前出现这个异常和解决方法详见下面的代码:
张三
19
李四
20
wangwu
22
首先,下面是从web服务器返回xml数据的jsp界面的代码:
<%@ page language="java" import="java.util.*,entity.*" pageEncoding="UTF-8" contentType="text/xml; charset=UTF-8"%>
<%
List
%>
<% for(News news : list){%>
<% }%>
现在,来看一下,从浏览器里查看源码时的数据:
H7N9禽流感
仔细看就会发现,多了两个行回车,产生的原因就是上面jsp界面黄色背景的代码部分,好,优化上面的jsp界面的代码如下:
<%
List list =(List)request.getAttribute("news");
%>
<% for(News news : list){%>
<%=news.getNtitle()%>
<%=news.getNauthor()%>
<% }%>
<%@ page language="java" import="java.util.*,entity.*" pageEncoding="UTF-8" contentType="text/xml; charset=UTF-8"%>
经过这样的优化后,利用Pull解析从web服务器返回的xml数据时,再也不抛出上面的异常了。啊,就这么个问题,我花了差不多两天的时间才发现,当时,没想到主要是因为首先查看了网上的一些资料和解决方法,反倒把自己给误导进去了,直到看到自己以前同样的异常消息的解决方法,才想到这些解决方法。