Android 获取属性值并使用SAX解析器将这些值映射到一起
在这里,我想得到一个数组列表中的解析映射值或哈希映射,我不知道哪种方法更好 这是我的XMl文件 我正在使用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
<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
isparis
,我想在将来使用它各自的值,比如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));