如何在android中解析下面的xml?

时间:2015-09-22 14:55:32

标签: android xml

我有一个如下所述的xml。

<labels> 
    <label id="lblMS">
        <text language="EN" value="Morning Sync"/>
        <text language="DE" value="Morgan Sync"/>
    </label>
    <label id="lblES">
        <text language="EN" value="Evening Sync"/>
        <text language="DE" value="Sync Abend"/>
    </label>
    <label id="lblAS">
        <text language="EN" value="Afternoon Sync"/>
        <text language="DE" value="Sync Afternoon"/>
    </label>
</labels>

我可以逐节点地使用xmlpull解析器进行解析,如下所示。

private HashMap<String, String> readCountry(XmlPullParser parser) 
            throws XmlPullParserException, IOException
{   
    parser.require(XmlPullParser.START_TAG, ns, "label");
    String labelid = parser.getAttributeValue(ns, "id");
    String textlan = "";
    String textval="";
    String capital="";
    String currencyCode="";
    String currency="";

    while(parser.next() != XmlPullParser.END_TAG){
        if(parser.getEventType() != XmlPullParser.START_TAG){
            continue;
        }

        String name = parser.getName();
         if(name.equals("text")){
             textlan = parser.getAttributeValue(ns, "language");
             textval = parser.getAttributeValue(ns,"value");
            readCapital(parser);
        }else{
            skip(parser);
        }
    }

    String details =    "Language : " + textlan + "\n" +
                        "Value : " + textval + "\n";


    HashMap<String, String> hm = new HashMap<String, String>();
    hm.put("id", labelid);
    hm.put("details",details);       

    return hm;
}

但我的要求略有不同。我想制作包含id作为键的标签和所有子节点即。文本节点作为标签ID的值。

我为此付出了很多努力。在这方面你能帮帮我吗。谢谢你

2 个答案:

答案 0 :(得分:2)

试试这个解决方案 -

将Hashmap添加到ArrayList。因此,您将获得“key”格式的哈希映射列表:“value”类型。

<logger logfileDirectory="path/to/logging/" logLevel="1"/>
<logger logfileDirectory="path/to/logging/" logLevel="2"/>
<logger logfileDirectory="path/to/logging/" logLevel="4"/>
<logger logfileDirectory="path/to/logging/" logLevel="4"/>
<logger logfileDirectory="path/to/logging/" logLevel="5"/>
"done"

希望它有所帮助。

答案 1 :(得分:1)

替换

hm.put("id", labelid);
hm.put("details",details);

hm.put(labelid, details);