0

在这里,我想在一个数组列表或哈希映射中解析 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标签,我不能轻松地做到这一点,也无法获得它的属性值,但我想知道如何管理这个Map元素的属性值,例如MapNameparis我想在将来使用它各自的值,比如LoadAtStartup属性值。

我如何管理这 3 个地图值?

谢谢

山姆

4

2 回答 2

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);
 }
于 2012-11-27T11:26:02.583 回答
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 所示)。

于 2012-11-27T11:35:58.193 回答