Получить значения атрибутов и отобразить эти значения вместе, используя SAX-парсер
Здесь я хочу получить анализ значений карты в одном списке массивов или хэш-карту, я не знаю, какой из них лучше.
Вот мой файл XMl
Я использую SAX-парсер, чтобы разобрать эту вещь
<Navigation useNavi="1" auto="1" diable="0" >
<Map MapName="paris" MapPath="\Storage Card\PA\xyz" LoadAtStartup="1" />
<Map MapName="swiss" MapPath="\Storage Card\SW\abc" LoadAtStartup="0" />
<Map MapName="delhi" MapPath="\Storage Card\DE\del" LoadAtStartup="1" />
</Navigation>
Здесь я хочу pasre Map
тег, я не могу сделать это легко, а также получить значения его атрибутов, но я хочу знать, как я могу это сделать Map
значения атрибутов элемента для примера MapName
является paris
и я хочу использовать его соответствующие значения в будущем, как LoadAtStartup
значение атрибута.
Как я могу управлять этими 3 значениями карт?
Спасибо
Сэм
2 ответа
Создать класс:
class MapObject
public string MapName;
public string MapPath;
public boolean LoadAtStartup;
public MapObject(string name, string path, boolean loadAtStartup){
this.MapName = name;
this.MapPath = path;
this.LoadAtStartup = loadAtStartup;
}
И контейнер для экземпляров класса:
List<MapObject> mapsObjects = new List<MapObject>();
И новые экземпляры в вашем парсере JSON (псевдокод, у вас уже есть)
for each object in JSON data{
mapObjects.add(new MapObject(name attribute, path attribute, loadAtStartup attribute);
}
Есть разные решения для вашего вопроса. Может быть, следующее даст вам возможное решение:
HashMap<String, Pair<String, Boolean>> mapEntries = new HashMap<String, Pair<String,Boolean>>();
//Inside SAX callback
String place = attrs.getValue("MapName");
String path = attrs.getValue("MapPath");
Boolean isLoadAtStartup = Integer.parseInt(attrs.getValue("LoadAtStartup")) == 1;
mapEntries.put(place, new Pair<String, Boolean>(path, isLoadAtStartup));
Выше используется android.util.Pair
учебный класс. Вы также можете использовать свой пользовательский контейнерный класс (как показано @Simon).