У меня есть XML файл, в котором есть теги с надписью 'l oop' и счетчик, то есть сколько раз я хочу l oop через вложенные теги в пределах для l oop. Как может il oop через одни и те же теги определенное количество раз? Есть ли способ, которым я могу переместить мой анализатор в начало тегов и продолжить оттуда?
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>