Skip to content

Instantly share code, notes, and snippets.

@tbruyelle
Forked from codebycliff/GetHashMapResource.java
Last active August 29, 2015 14:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tbruyelle/07b6959741416e69983d to your computer and use it in GitHub Desktop.
Save tbruyelle/07b6959741416e69983d to your computer and use it in GitHub Desktop.
public static Map<String, String> getHashMapResource(Context c, int hashMapResId) {
Map<String, String> map = null;
XmlResourceParser parser = c.getResources().getXml(hashMapResId);
String key = null, value = null;
try {
int eventType = parser.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
if (eventType == XmlPullParser.START_DOCUMENT) {
Log.d("utils", "Start document");
}
else if (eventType == XmlPullParser.START_TAG) {
if (parser.getName().equals("map")) {
boolean isLinked = parser.getAttributeBooleanValue(null, "linked", false);
map = isLinked
? new LinkedHashMap<String, String>()
: new HashMap<String, String>();
}
else if (parser.getName().equals("entry")) {
key = parser.getAttributeValue(null, "key");
if (null == key) {
parser.close();
return null;
}
}
}
else if (eventType == XmlPullParser.END_TAG) {
if (parser.getName().equals("entry")) {
map.put(key, value);
key = null;
value = null;
}
}
else if (eventType == XmlPullParser.TEXT) {
if (null != key) {
value = parser.getText();
}
}
eventType = parser.next();
}
}
catch (Exception e) {
e.printStackTrace();
return null;
}
return map;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment