报错内容
org.xmlpull.v1.XmlPullParserException: Error parsing document. (position:line -1, column -1) caused by: org.apache.harmony.xml.ExpatParser$ParseException: At line 3, column 15: 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 com.zpc.service.PersonService.getPersons(PersonService.java:48)
at com.zpc.test.PersonServiceTest.testPersonService(PersonServiceTest.java:17)
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)
业务类
public class PersonService {
public static List<Person> getPersons(InputStream xml)throws Exception{
List<Person> persons =null;
Person person = null;
XmlPullParser pullParser = Xml.newPullParser();
pullParser.setInput(xml, "UTF-8");
int event = pullParser.getEventType();
while(event!=XmlPullParser.END_DOCUMENT){
switch (event) {
case XmlPullParser.START_DOCUMENT:
persons = new ArrayList<Person>();
person = new Person();
break;
case XmlPullParser.START_TAG:
if("person".equals(pullParser.getName())){
int id = new Integer(pullParser.getAttributeValue(0));
person.setId(id);
}
if("name".equals(pullParser.getName())){
String name = pullParser.nextText();
person.setName(name);
}
if("age".equals(pullParser.getName())){
int age = new Integer(pullParser.nextText());
person.setAge(age);
}
break;
case XmlPullParser.END_TAG:
if("person".equals(pullParser.getName())){
persons.add(person);
person = null;
}
break;
}
event = pullParser.next();
}
return persons;
}
}
一调用next方法,就报错。。xml文件
<?xml version="1.0" encoding="UTF-8"?>
<persons>
<person id=19>
<name>zhangsan</name>
<age>30</age>
</person>
<person id=25>
<name>lisi</name>
<age>21</age>
</person>
</persons>清单文件
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.zpc.xml"
android:versionCode="1"
android:versionName="1.0" > <uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="15" /> <application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/title_activity_main" >
<intent-filter>
<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<uses-library android:name="android.test.runner"/>
</application>
<instrumentation android:name="android.test.InstrumentationTestRunner"
android:targetPackage="com.zpc.xml" android:label="Tests for my App"/>
</manifest>
org.xmlpull.v1.XmlPullParserException: Error parsing document. (position:line -1, column -1) caused by: org.apache.harmony.xml.ExpatParser$ParseException: At line 3, column 15: 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 com.zpc.service.PersonService.getPersons(PersonService.java:48)
at com.zpc.test.PersonServiceTest.testPersonService(PersonServiceTest.java:17)
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)
业务类
public class PersonService {
public static List<Person> getPersons(InputStream xml)throws Exception{
List<Person> persons =null;
Person person = null;
XmlPullParser pullParser = Xml.newPullParser();
pullParser.setInput(xml, "UTF-8");
int event = pullParser.getEventType();
while(event!=XmlPullParser.END_DOCUMENT){
switch (event) {
case XmlPullParser.START_DOCUMENT:
persons = new ArrayList<Person>();
person = new Person();
break;
case XmlPullParser.START_TAG:
if("person".equals(pullParser.getName())){
int id = new Integer(pullParser.getAttributeValue(0));
person.setId(id);
}
if("name".equals(pullParser.getName())){
String name = pullParser.nextText();
person.setName(name);
}
if("age".equals(pullParser.getName())){
int age = new Integer(pullParser.nextText());
person.setAge(age);
}
break;
case XmlPullParser.END_TAG:
if("person".equals(pullParser.getName())){
persons.add(person);
person = null;
}
break;
}
event = pullParser.next();
}
return persons;
}
}
一调用next方法,就报错。。xml文件
<?xml version="1.0" encoding="UTF-8"?>
<persons>
<person id=19>
<name>zhangsan</name>
<age>30</age>
</person>
<person id=25>
<name>lisi</name>
<age>21</age>
</person>
</persons>清单文件
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.zpc.xml"
android:versionCode="1"
android:versionName="1.0" > <uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="15" /> <application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/title_activity_main" >
<intent-filter>
<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<uses-library android:name="android.test.runner"/>
</application>
<instrumentation android:name="android.test.InstrumentationTestRunner"
android:targetPackage="com.zpc.xml" android:label="Tests for my App"/>
</manifest>
我也遇到过这个, 可以参考这里.http://www.linuxidc.com/Linux/2010-09/28463.htm