Android本地化xml文件
Posted
技术标签:
【中文标题】Android本地化xml文件【英文标题】:Android localize xml file 【发布时间】:2016-09-05 18:08:45 【问题描述】:我有几个不同语言的 Xml,但是当我以编程方式获取 XmlResourceParser 时,我总是得到默认语言。
这就是我以编程方式获取 Xml 的方式:
XmlResourceParser xpp = TCXApplication.getContext().getResources().getXml(R.xml.some_name);
我的 Xml 看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
<plist version="1.0">
<array>
<dict>
<key>type</key>
<string>some</string>
<key>other_some</key>
<array>
<string>...</string>
<string>...</string>
<string>...</string>
</array>
<key>other_other_some</key>
<array>
<string>...</string>
<string>...</string>
<string>...</string>
</array>
</dict>
</array>
</plist>
对于每种语言(xml、xml-es、xml-fr、xml-it),我在不同文件夹中都有此文件的不同版本,但即使我将设备语言更改为其他语言... 难道我做错了什么?有没有办法本地化plist?
感谢您的帮助。何塞
【问题讨论】:
【参考方案1】:我终于设法本地化了我的 xml 文件,我所做的就是将我的文件移动到 raw 文件夹,所以我最终得到了一个 (raw, raw-es, raw-it, raw-fr)
为了解析来自他们的信息,我使用:
private List<PlistItem> parse()
try
InputStream inputStream = MyApplication.getContext().getResources()
.openRawResource(R.raw.some);
XmlPullParserFactory pullParserFactory;
pullParserFactory = XmlPullParserFactory.newInstance();
XmlPullParser xmlPullParser = pullParserFactory.newPullParser();
xmlPullParser.setInput(inputStream, null);
String key = null;
PlistItem item = null;
int eventType = xmlPullParser.getEventType();
while (!(eventType == XmlPullParser.END_TAG
&& xmlPullParser.getName() != null
&& xmlPullParser.getName().equals("plist")))
if (eventType == XmlPullParser.START_DOCUMENT)
list = new ArrayList<>();
else if (eventType == XmlPullParser.START_TAG && xmlPullParser.getName().contentEquals(PLIST_ELEMENT_DICT))
item = new PlistItem();
else if (eventType == XmlPullParser.END_TAG && xmlPullParser.getName().contentEquals(PLIST_ELEMENT_DICT))
list.add(item);
else if (eventType == XmlPullParser.START_TAG && xmlPullParser.getName().contentEquals(PLIST_ELEMENT_KEY))
xmlPullParser.next();
key = xmlPullParser.getText();
else if (eventType == XmlPullParser.START_TAG && xmlPullParser.getName().contentEquals(PLIST_ELEMENT_STRING))
xmlPullParser.next();
if (key != null && item != null)
if (key.contentEquals(PLIST_VALUE_TYPE))
item.type = xmlPullParser.getText();
if (key.contentEquals(PLIST_VALUE_SOME))
item.some.add(xmlPullParser.getText());
if (key.contentEquals(PLIST_VALUE_OTHER_SOME))
item.otherSome.add(xmlPullParser.getText());
eventType = xmlPullParser.next();
inputStream.close();
catch (Exception e)
e.printStackTrace();
return list;
我希望这对将来的某人有用。 问候 何塞
【讨论】:
以上是关于Android本地化xml文件的主要内容,如果未能解决你的问题,请参考以下文章
Java / Android - 读取、操作 XML 文件并将其保存到内部存储
前端操作xml,从本地获取xml格式的文件,并且解析xml文件,拿到需要的值
前端操作xml,从本地获取xml格式的文件,并且解析xml文件,拿到需要的值