感觉应该是xml文件问题,但是我没看出来,试了sax pull 还有本地的xml,服务器的xml 都不行
//org.apache.harmony.xml.ExpatParser$ParseException: At line 1, column 0: no element found
at org.apache.harmony.xml.ExpatParser.finish(ExpatParser.java:553)
at org.apache.harmony.xml.ExpatParser.parseDocument(ExpatParser.java:483)
at org.apache.harmony.xml.ExpatReader.parse(ExpatReader.java:320)
at org.apache.harmony.xml.ExpatReader.parse(ExpatReader.java:277)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:392)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:189)
at com.itcast.service.HttpRequestService.paseXML(HttpRequestService.java:73)
at com.itcast.net_xml.HttpRequestXmlTest.testPaseXml(HttpRequestXmlTest.java:35)
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 version="1.0" encoding="UTF-8"?>
<videos>
<video id="1">
<title>aaaaa</title>
<time>10</time>
</video>
<video id="2">
<title>sssss</title>
<time>20</time>
</video>
</videos>
这个是我解析后生成的xml,SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();
SAXParser parser = saxParserFactory.newSAXParser();
VideoParserHandler videoParserHandler = new VideoParserHandler();
parser.parse(inputStream, videoParserHandler);
videos = videoParserHandler.getVideos();
return videos;
} public static final class VideoParserHandler extends DefaultHandler {
private String tagName;
private Video video;
private List<Video> videos; public List<Video> getVideos() {
return videos;
} @Override
public void startDocument() throws SAXException {
// TODO Auto-generated method stub
videos = new ArrayList<Video>();
} @Override
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
// TODO Auto-generated method stub
if ("video".equalsIgnoreCase(localName)) {
video = new Video();
video.setId(Integer.parseInt(attributes.getValue(0)));
}
tagName = localName;
} @Override
public void characters(char[] ch, int start, int length) throws SAXException {
if (tagName != null) {
String data = new String(ch, start, length);
if (tagName.equalsIgnoreCase("title")) {
video.setTitle(data);
} else if (tagName.equalsIgnoreCase("time")) {
video.setTime(Integer.parseInt(data));
}
}
} @Override
public void endElement(String uri, String localName, String qName) throws SAXException {
// TODO Auto-generated method stub
if (tagName.equalsIgnoreCase("video")) {
videos.add(video);
video = null;
}
tagName = null;
} }
上面是sax的解析代码 XmlPullParser pullParser = Xml.newPullParser();
pullParser.setInput(inputStream, "UTF-8");
int event = pullParser.getEventType();//
while (event != XmlPullParser.END_DOCUMENT) {
switch (event) {
case XmlPullParser.START_DOCUMENT:
videos = new ArrayList<Video>();
break;
case XmlPullParser.START_TAG:
String name = pullParser.getName();//
if ("video".equalsIgnoreCase(name)) {
video = new Video();
video.setId(Integer.parseInt(pullParser.getAttributeValue(0)));// }
if (video != null) {
if ("title".equalsIgnoreCase(name)) {
video.setTitle(pullParser.nextText());//
} else if ("time".equalsIgnoreCase(name)) {
video.setTime(Integer.parseInt(pullParser.nextText()));
}
}
break;
case XmlPullParser.END_TAG:
if ("video".equalsIgnoreCase(pullParser.getName())) {
videos.add(video);
video = null;
}
break;
}
event = pullParser.next();//
}
SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();
SAXParser parser = saxParserFactory.newSAXParser();
VideoParserHandler videoParserHandler = new VideoParserHandler();
parser.parse(inputStream, videoParserHandler);
videos = videoParserHandler.getVideos();
return videos;上面是pull解析代码