我正在尝试将应用程序 config.xml 中的所有条目解析为 Map<String,String>
似乎找不到简单的方法来做到这一点..
该文件位于 res/values/config.xml
有没有办法通过 mAppContext.getResources()
获取所有键标识符?
最佳答案
如果 res/xml/
中有任意 XML 文件或相关资源集(例如 res/xml-es/
),您可以使用 getXml()
在Resources
上对象获得 XmlResourceParser
。总的来说,这只是一个 XmlPullParser
它知道如何从资源中读取内容。
从那里,您可以使用 XmlPullParser
基于事件的拉取 API 来读取 XML。
例如,假设我们有 res/xml/words.xml
具有以下内容:
<words>
<word value="lorem" />
<word value="ipsum" />
<word value="dolor" />
<word value="sit" />
<word value="amet" />
<word value="consectetuer" />
<word value="adipiscing" />
<word value="elit" />
<word value="morbi" />
<word value="vel" />
<word value="ligula" />
<word value="vitae" />
<word value="arcu" />
<word value="aliquet" />
<word value="mollis" />
<word value="etiam" />
<word value="vel" />
<word value="erat" />
<word value="placerat" />
<word value="ante" />
<word value="porttitor" />
<word value="sodales" />
<word value="pellentesque" />
<word value="augue" />
<word value="purus" />
</words>
然后这段代码将填充 ArrayList<String>
(名为 items
),文字为:
XmlPullParser xpp=getResources().getXml(R.xml.words);
while (xpp.getEventType()!=XmlPullParser.END_DOCUMENT) {
if (xpp.getEventType()==XmlPullParser.START_TAG) {
if (xpp.getName().equals("word")) {
items.add(xpp.getAttributeValue(0));
}
}
xpp.next();
}
您需要针对您的 XML 结构(我不知道您的“键”是元素名称、特定属性值还是什么)和内存中数据表示(例如 mapStuff.put(xpp.getName(), xpp.getAttributeValue(0))
)进行调整。
对于您尝试使用 res/xml/config.xml
解决的任何问题,完全有可能有更简单的解决方案。文件。但是,由于我们不知道该文件包含什么内容,也不知道您如何使用其中包含的值,因此很难向您提供在应用程序中打包该数据的其他方法的建议。
关于java - Android - 将 config.xml 解析为 Map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32639969/