[英]XmlPullParserException during parsing XML with XMLPullParser
Need your help to resolve this : Trying to parse this xml -需要您的帮助来解决此问题:尝试解析此 xml -
<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>
With following function -具有以下功能 -
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;
}
where configuration is the name attribute of configuration tag.其中配置是配置标签的名称属性。 But getting an exception -但得到一个例外 -
org.xmlpull.v1.XmlPullParserException: expected: START_TAG {null}configuration (position:START_DOCUMENT null@1:1 in java.io.InputStreamReader@42323800)
Please help me where I am going wrong.请帮助我哪里出错了。
Make these two changes in your code:在您的代码中进行以下两项更改:
Make xml valid.使 xml 有效。 The segment tags are not ended.段标签没有结束。 They should be: <segment order="1" name="left upper anterior"/>
它们应该是: <segment order="1" name="left upper anterior"/>
Remove the line parser.require(XmlPullParser.START_TAG, null, "configuration");
删除行parser.require(XmlPullParser.START_TAG, null, "configuration");
Everything else looks fine.其他一切看起来都很好。 I was able to run your code as well.我也能够运行你的代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.