Java 使用XMLPullParser解析XML期间的XmlPullParserException
需要您的帮助来解决此问题: 正在尝试解析此xml-Java 使用XMLPullParser解析XML期间的XmlPullParserException,java,android,Java,Android,需要您的帮助来解决此问题: 正在尝试解析此xml- <LungProtocol><configuration name="FLUS Sitting"> <segment order="1" name="left upper anterior"> <segment order="2" name="left lower anterior"> </configuration> <configuration na
<LungProtocol><configuration name="FLUS Sitting">
<segment order="1" name="left upper anterior">
<segment order="2" name="left lower anterior">
</configuration>
<configuration name="FLUS Supine">
<segment order="1" name="left upper anterior">
<segment order="2" name="left lower anterior">
</configuration></LungProtocol>
请告诉我哪里出错。在代码中进行以下两项更改:
parser.require(XmlPullParser.START_标记,null,“configuration”)代码>
其他一切看起来都很好。我也可以运行您的代码。xml文档末尾是否应该有一个“”的结束标记(如“”)?是的,编辑了这个问题。我正在使用结束标记。不确定这是否是修复。但替换这一行听起来合乎逻辑:parser.require(XmlPullParser.START_标记,null,“configuration”);使用:parser.require(XmlPullParser.START_标记,null,“LungProtocol”);你能粘贴整个堆栈跟踪吗?或者至少是它抛出此异常的位置。org.xmlpull.v1.XmlPullParserException:expected:START_TAG{null}配置(位置:START_DOCUMENTnull@1:1在java.io中。InputStreamReader@42323800)org.kxml2.io.KXmlParser.require(KXmlParser.java:2056)controller.XmlPullParserHandler.parse(XmlPullParserHandler.java:35)在android.app.activity.performCreate(activity.java:5243)的android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)的activity.MainActivity.onCreate(MainActivity.java:33)
public List<LungSegment> parse(InputStream is, String configuration) {
try {
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
XmlPullParser parser = factory.newPullParser();
segment = new LungSegment();
parser.setInput(is, null);
parser.require(XmlPullParser.START_TAG, null, "configuration");
int eventType = parser.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
String tagname = parser.getName();
switch (eventType) {
case XmlPullParser.START_TAG:
if(("configuration").equalsIgnoreCase(tagname) && parser.getAttributeValue(null, "name").equalsIgnoreCase(configuration)){
eventType = parser.next();
//eventType = parser.next();
tagname = parser.getName();
Log.v("XMLTAG", "configuration = "+configuration);
if (("segment").equalsIgnoreCase(tagname)) {
// create a new instance of segment
segment = new LungSegment();
segment.setSegmentName(parser.getAttributeValue(null, "name"));
segment.setSegmentOrder(Integer.parseInt(parser.getAttributeValue(null, "order")));
}
}
break;
case XmlPullParser.END_TAG:
if (tagname.equalsIgnoreCase("segment")) {
// add segment object to list
segments.add(segment);
} else if (("configuration").equalsIgnoreCase(tagname) && parser.getAttributeValue(null, "name").equalsIgnoreCase(configuration)) {
return segments;
}
break;
}
eventType = parser.next();
}
} catch (XmlPullParserException e) {e.printStackTrace();}
catch (IOException e) {e.printStackTrace();}
return segments;
}
org.xmlpull.v1.XmlPullParserException: expected: START_TAG {null}configuration (position:START_DOCUMENT null@1:1 in java.io.InputStreamReader@42323800)