【问题标题】:Looping through XML android/java循环通过 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>

【问题讨论】:

    标签: java android xml parsing


    【解决方案1】:

    我建议你解析孩子,将解析后的数据存储在内存中,然后循环遍历预先解析的数据。这将比尝试倒带解析器并在每个循环上解析更容易编写和更有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-02
      • 2017-04-27
      • 1970-01-01
      • 1970-01-01
      • 2013-03-14
      • 1970-01-01
      相关资源
      最近更新 更多