java - Android - 使用简单 XML 仅从 XML 文件中获取一些元素

标签 java android xml mapping simple-framework

我的 Android 应用程序使用 Simple XML 读取一个巨大的 XML 文件.显然需要一段时间。事实上,目前我只需要检索一个元素列表。有没有办法强制 Simple XML 不读取所有其他元素?

我不想使用其他库。我只是想知道这种高级的东西是否可以通过简单 XML 实现。

感谢您的帮助。


编辑

使用 MH建议,解析还是需要50秒...

所以我想试试 Ilya Blokh 中的其他解决方案使用 XmlPullParser .

这是 XML 文件所需的部分:

<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
    ....
    <ANIMALS>
        <animal>
            <name>Dog</name>
            <color>white</color>
            <color>black</color>
            <color>brown</color>
        </animal>
        <animal>
            <name>Cat</name>
            <color>white</color>
            <color>black</color>
            <color>gray</color>
            <color>red</color>
        </animal>
        ...
    </ANIMALS>
    ...
</ROOT>

我想填充这个类:

import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Animals {

    /**
     * Key: animal name, Value: animal colors
     */
    private Map<String, List<String>> entries;

    public Animals() {
        entries = new HashMap<String, List<String>>();
    }

    public void addAnimal(String name, List<String> colors) {
        entries.put(name, colors);
    }

    public List<String> getColors(String animalName) {
        return entries.get(animalName);
    }
}

我如何处理列表和 XmlPullParser?我不习惯使用解析器...

再次感谢

最佳答案

您可以使用 loose mapping flag绕过指定整个文档结构的严格要求。如果您直接在 Persister 上使用此功能,则此功能在您的情况下可能特别方便,因为您提到只对单个元素列表感兴趣。查看并通读链接的示例。

不幸的是,我对 Simple XML 的内部结构还不够熟悉,无法说“不要读取所有其他元素”。我想如上所述的松散映射选项只会产生您感兴趣的映射,但我怀疑您能否避免解析整个 XML 文档。

关于java - Android - 使用简单 XML 仅从 XML 文件中获取一些元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10295927/

相关文章:

java - 如何在 .java 代码中启用禁用的(在 xml 中)ListPreference 对象?

python - 在python中向XML添加子元素

php - Soapclient 不解析 WSDL(使用 SSL 证书和 wsse)

java - 使用 java SDK 11.0.6 构建可执行 JavaFX 应用程序

java - 使用不同语言实现的 2 个不同应用程序如何通过 JMS 进行通信?

Java 打印,Letter 格式而不是 A4

java - Android - 首次运行首选项初始化

java - 如何在持久化之前启用 Spring Bean 验证但忽略 HTTP 请求

android - Windows 10 上的 genymotion "unable to load virtualbox engine"和 Virtualbox 错误 "Result Code: E_FAIL (0x80004005)"

java - JAXB 将子类的实例解码到列表中