获取属性值并使用SAX解析器将这些值映射到一起

时间:2012-11-27 11:18:51

标签: android xml-parsing sax ixmlserializable

这里我想在一个数组列表或哈希映射中获取解析Map值,我知道哪种方法更好。

这是我的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>

在这里,我想要传递Map标签,我无法轻松完成并获取其属性值,但我想知道如何为示例{{1}管理此Map元素属性值是} MapName我想在将来使用其各自的值,例如paris属性值。

如何管理这三个地图值?

由于

萨姆

2 个答案:

答案 0 :(得分:0)

创建一个类:

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);
 }

答案 1 :(得分:0)

您的问题有不同的解决方案。也许以下内容将为您提供一个可能的解决方案:

    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所示)。