我的 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/