Благодарю за ответ @ Riddhish.Chaudhari.Да, NodeList был фактическим решением моего требования. Вот как я это решил ..
public static HashMap<String, Role> roles = null;
public static String user_roles = null;
, затем я реализовал следующую функцию;
public static void parseRoles(){
roles = new HashMap<String, Role>();
user_roles = data; // my xml string
try {
Document dom = getXMLDocument(user_roles);
NodeList modules = dom.getDocumentElement().getChildNodes();
for (int i=0; i<modules.getLength(); i++){
Role role = new Role();
Node module = modules.item(i);
String moduleName = module.getNodeName();
NodeList accesses = module.getChildNodes();
for (int j=0; j<accesses.getLength(); j++){
Node access = accesses.item(j);
String name = access.getNodeName();
int accessValue = -1;
try{
accessValue = Integer.parseInt(access.getFirstChild().getNodeValue().trim());
}catch (Exception e) {
AlertHelper.logError(e.getClass().getCanonicalName(), e.getMessage());
}
if(accessValue != -1){
if(name.equalsIgnoreCase("access")){
role.access = accessValue;
}else if(name.equalsIgnoreCase("view")){
role.view = accessValue;
}else if(name.equalsIgnoreCase("list")){
role.list = accessValue;
}else if(name.equalsIgnoreCase("edit")){
role.edit = accessValue;
}else if(name.equalsIgnoreCase("delete")){
role.delete = accessValue;
}
}
}
roles.put(moduleName.toLowerCase(), role);
}
} catch (Exception e) {
roles = null;
AlertHelper.logError(e.getClass().getCanonicalName(), e.getMessage());
}
}
Я добавил следующий класс в свой проект проекта, который хранит данные из xml в объекте Role () в вышеуказанной функции;
public class Role {
public int access = 89;
public int view = 90;
public int list = 90;
public int edit = 90;
public int delete = 90;
}
Теперь, когда мне нужно получить данные, я могу использовать следующий способ:
Предположим, я хочу получитьэлементы из Вызывает модуль , затем использует хэш-карту роли ;
int access = roles.get("Calls").access;
int view = roles.get("Calls").view;
int list = roles.get("Calls").list;
int edit = roles.get("Calls").edit;
int delete = roles.get("Calls").delete;