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

标签 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 的值。

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

最佳答案

试试这个解决方案-

将 Hashmap 添加到 ArrayList。因此,您将获得格式为“键”:“值”类型的 HashMap 列表。

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="";

    HashMap<String, String> hm = new HashMap<String, String>();
    ArrayList<HashMap> al=new ArrayList<HashMap>();

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

            String details =    "Language : " + textlan + "\n" +
                        "Value : " + textval + "\n";
            hm.put(labelid, details);
            al.add(hm);
        }else{
            skip(parser);
        }
    }
    someArray = compareXMLValues(timeSessionId,al);
    //return al;
    return someArray;
}



compareXMLValues(timeSessionId,al)
{
    parse full XML of syncgroupsettings;
    And compare if (timeSessionId == parser.getAttributeValue(ns, "labelid"))
    {
    if it is true-
    read from while loop, syncgroupname and store in Array list of Strings.
    }
    else
    {
    continue;
    }
}

希望对您有所帮助。

关于android - 如何在android中解析下面的xml?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32720211/

相关文章:

android - 如何让我的 AIR (flash as3) 应用程序在 Android 上全屏显示?

Android 调试器在 minifyEnabled false 后不会在断点处停止

javascript - 跨域AJAX读取XML

xml - 在 XML 中存储数据系列的最佳/正确/最有效的方法是什么

xml - XSD:将 xs:group 与 xs:all 结合起来?

android - 在 OnCreate 中隐藏软输入

android - Android 内置打印机上的 Flutter Print

java - smali代码语法中的 ".line"是什么意思? (Android-Smali代码)

xml - 使用 Ace 通过 XSD 编辑 XML

java - 如何在查看寻呼机中的图像顶部添加文本?