5

我想获得使用 XmlResourceParser 解析自定义 android 标签的正确方法。我正在使用带有 android 插件的 Eclipse 3.6,我希望name使用strings.xml.

这是文件夹index.xml中正在解析的内容。res/xml/

<?xml version="1.0" encoding="utf-8"?>
<Index xmlns:android="http://schemas.android.com/apk/res/android">
<Sheet
    shortName="o_2sq"
    android:name="@string/o_2sq"
    instructions=""
/>
</Index>

这是文件夹strings.xml中的res/values/文件

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="o_2sq">Organize two squares</string>
</resources>

index.xml以及使用 XmlResourceParser解析第一个的代码片段:

String name = xpp.getAttributeValue(null, "android:name");
String shortName = xpp.getAttributeValue(null, "shortName");

变量name包含null,但shortName包含"o_2sq"。我也尝试了以下但没有成功:

String name = xpp.getAttributeValue("android", "name");

编写句子以使变量名称包含的正确方法是什么"Organize two squares"

4

3 回答 3

4

试试这个:

String name = xpp.getAttributeValue("http://schemas.android.com/apk/res/android", "name");
于 2012-04-12T12:21:09.457 回答
1

我发现克服这个问题的最佳解决方案。

String s = xpp.getAttributeValue("http://schemas.android.com/apk/res/android", "name");
String name = null;
if(s != null && s.length() > 1 && s.charAt(0) == '@') {
  int id = Integer.parseInt(s.substring(1));
  name = getString(id);
} else {
  name = "";
}
于 2012-05-11T06:49:07.183 回答
1
final String NAMESPACE_ANDROID = "http://schemas.android.com/apk/res/android";
final int VALUE_NOT_SET = -1;
int resId = parser.getAttributeResourceValue(NAMESPACE_ANDROID, "name", VALUE_NOT_SET);
String value = null;
if (VALUE_NOT_SET != resId) {
    value = context.getString(resId);
}

我认为上面的代码可以帮助你。

于 2014-07-30T11:55:54.950 回答