Получить значения атрибутов и отобразить эти значения вместе, используя 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).

Другие вопросы по тегам