[英]Looping through XML android/java
我有一个 XML 文件,其中包含“循环”标签和一个计数,这是我想循环遍历 for 循环中的嵌套标签的次数。 我怎样才能循环通过相同的标签一定次数? 有没有办法可以将我的解析器移动到标签的开头并从那里继续?
private List readFeed(XmlPullParser parser) throws XmlPullParserException, IOException {
parser.require(XmlPullParser.START_TAG, ns, "start");
while (parser.next() != XmlPullParser.END_DOCUMENT) {
parser.next();
if (parser.getEventType() != XmlPullParser.START_TAG) {
continue;
}
String currentTag = parser.getName(); /* get name of each tag in document */
if(currentTag.equals("once")) { /* Look for 'command' tag */
currentTag = getCommandType(parser); /* Parse command tag */
commandsList.add(currentTag); /* Add command tag to list of commands from file */
} else if(currentTag.equals("loop")) { /* Look for 'loop' tag */
int currentIndex = parser.getIndex();
commandsList.addAll(loopCommand(parser));
} else {
skip(parser); /* Tag that is not a command or loop --> skip tag */
}
}
return commandsList;
}
private List<String> loopCommand(XmlPullParser parser) throws IOException, XmlPullParserException {
parser.require(XmlPullParser.START_TAG, ns, "loop"); /* Require parser to start with 'loop' */
int loopNumber = Integer.parseInt(parser.getAttributeValue(null, "count")); /* Get # of times needed to loop from 'count' tag */
List<String> loopCommands = new ArrayList<>();
while(parser.next() != XmlPullParser.END_TAG) {
if (parser.getEventType() != XmlPullParser.START_TAG) {
continue;
}
String loopTags = parser.getName();
String addToList = "";
if(loopTags.equals("command")) {
addToList = getCommandType(parser);
loopCommands.add(addToList);
} else {
skip(parser);
}
parser.nextTag();
}
return loopCommands;
}
<start>
<once type="fruitTree"> </command>
<loop count="2">
<command type="maybe"> </command>
<command type="yes"> </command>
</loop>
</start>
我建议你解析孩子,将解析后的数据存储在 memory 中,然后遍历预解析的数据。 这将比尝试倒带解析器并在每个循环上解析更容易编写和更有效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.