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

Android 获取属性值并使用SAX解析器将这些值映射到一起,android,xml-parsing,sax,ixmlserializable,Android,Xml Parsing,Sax,Ixmlserializable,在这里,我想得到一个数组列表中的解析映射值或哈希映射,我不知道哪种方法更好 这是我的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\ab

在这里,我想得到一个数组列表中的解析映射值或哈希映射,我不知道哪种方法更好

这是我的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
标记,我不能轻松地完成它,也无法获得它的属性值,但我想知道如何管理这个
Map
元素属性值,例如
MapName
is
paris
,我想在将来使用它各自的值,比如
LoadAtStartup
属性值

如何管理这3个地图值

谢谢

Sam

创建一个类:

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

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

    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));
HashMap mapEntries=new HashMap();
//内部SAX回调
字符串place=attrs.getValue(“MapName”);
字符串路径=attrs.getValue(“MapPath”);
布尔值isLoadAtStartup=Integer.parseInt(attrs.getValue(“LoadAtStartup”))==1;
放置(place,新对(path,isLoadAtStartup));
上面使用的是
android.util.Pair
类。您也可以使用用户定义的容器类(如@Simon所示)

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