循环通过 XML android/java
Posted
技术标签:
【中文标题】循环通过 XML android/java【英文标题】:Looping through XML android/java 【发布时间】:2020-07-26 14:13:41 【问题描述】:我有一个 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>
【问题讨论】:
【参考方案1】:我建议你解析孩子,将解析后的数据存储在内存中,然后循环遍历预先解析的数据。这将比尝试倒带解析器并在每个循环上解析更容易编写和更有效。
【讨论】:
以上是关于循环通过 XML android/java的主要内容,如果未能解决你的问题,请参考以下文章
循环在尝试通过 Oracle EBS 中的并发程序使用 PL/SQL 创建 XML 时提前结束