循环通过 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的主要内容,如果未能解决你的问题,请参考以下文章

通过 XML 循环的 ImageView

循环在尝试通过 Oracle EBS 中的并发程序使用 PL/SQL 创建 XML 时提前结束

在循环中使用 TEI XML 解析器

在blogger xml中定义循环计数

如何循环访问和访问多维和关联数组中的各种元素? PHP,JSON 或 XML

xml凭证模板的一般制作