Android xml解析并在列表视图中显示数据

Android xml解析并在列表视图中显示数据,android,xml,xml-parsing,Android,Xml,Xml Parsing,我有一个类似[this][1]的xml文件,我需要根据“组名”获取所有“版本名” 我必须创建一个组名列表,并在单击组名时显示版本名列表。 输出: 点击目录: 此xml以不同的语言存在,是否有任何方法可以在不与组名进行比较的情况下获取所有版本名 目前我正在使用类型标签来获取所有目录 : 但是一些杂志也出现在目录类型中。所以没有得到正确的结果 如何获取所有版本名其中组名是目录等等 或者一个更好的方法。。我不确定我使用的代码是否是一个好方法。 请建议 我的代码: final String URL

我有一个类似[
this
][1]的xml文件,我需要根据
“组名”
获取所有
“版本名”

我必须创建一个组名列表,并在单击组名时显示版本名列表。 输出:

点击目录:

此xml以不同的语言存在,是否有任何方法可以在不与组名进行比较的情况下获取所有版本名

目前我正在使用类型标签来获取所有目录 :

但是一些
杂志
也出现在
目录
类型中。所以没有得到正确的结果

如何获取所有
版本名
其中
组名
目录
等等

或者一个更好的方法。。我不确定我使用的代码是否是一个好方法。 请建议

我的代码:

final String URL = "http://xml/web/?frg="+lang+"&user="+count+"_"+user;
                System.out.println("URL child : " + URL);
                parser = new XMLParser();
                String xml = parser.getXmlFromUrl(URL); // getting XML from URL
                doc = parser.getDomElement(xml); // getting DOM element


                NodeList n1 = doc.getElementsByTagName("groups");

                for (int i = 0; i < 1; i++) { //ToDo : worked temp
                    Element e = (Element) n1.item(0);
                    NodeList children = e.getChildNodes();


                    if(item_name.equalsIgnoreCase("Catalogs")||item_name.equalsIgnoreCase("Kataloge")) // there could be other languages
                    {

                        NodeList nodeList2 = doc.getElementsByTagName("edition");
                        for (int k = 0; k < nodeList2.getLength(); k++) {
                            HashMap<String, String> map = new HashMap<String, String>();
                            Element ele2 = (Element) nodeList2.item(k);
                            if(parser.getValue(ele2, "type").toString().equalsIgnoreCase("catalog"))
                            {
                                System.out.println(""+parser.getValue(ele2, "name").toString());
                                System.out.println(""+parser.getValue(ele2, "cat_url").toString());
                                map.put(ss2,  parser.getValue(ele2,ss2 ));
                                map.put(KEY_THUMB_URL, parser.getValue(ele2, KEY_THUMB_URL));
                                map.put(CAT_URL, parser.getValue(ele2,"cat_url"));
                                // adding HashList to ArrayList
                                songsList.add(map);
                            }
                        }


                    }
                    if(item_name.equalsIgnoreCase("Magazines")||item_name.equalsIgnoreCase("Magazine"))
                    {

                        NodeList nodeList2 = doc.getElementsByTagName("edition");
                        for (int k = 0; k < nodeList2.getLength(); k++) {
                            HashMap<String, String> map = new HashMap<String, String>();
                            Element ele2 = (Element) nodeList2.item(k);
                            if(parser.getValue(ele2, "type").toString().equalsIgnoreCase("pdf"))

                            {
                                System.out.println(""+parser.getValue(ele2, "name").toString());
                                System.out.println(""+parser.getValue(ele2, "cat_url").toString());
                                map.put(ss2,  parser.getValue(ele2,ss2 ));
                                map.put(KEY_THUMB_URL, parser.getValue(ele2, KEY_THUMB_URL));
                                map.put(CAT_URL, parser.getValue(ele2,"cat_url"));
                                // adding HashList to ArrayList
                                songsList.add(map);
                            }
                        }



                    }

                    if(item_name.equalsIgnoreCase("Instructions"))
                    {


                        NodeList n2 = doc.getElementsByTagName("groups");

                        for (int i1 = 0; i1 < 1; i1++) { //ToDo : worked temp
                            Element e1 = (Element) n2.item(0);
                            NodeList children1 = e1.getChildNodes();

                            for (int j = 0; j <children1.getLength(); j++) {
                                HashMap<String, String> map = new HashMap<String, String>();
                                child = children1.item(j);

                                //   System.out.println("name node22 inside " + parser.getValue((Element)child, "name"));
                                if(parser.getValue((Element)child, "name").equals("Instructions"))
                                {

                                    if (child.getNodeName().equalsIgnoreCase("group")) {
                                        NodeList nl2 = child.getChildNodes();
                                        System.out.println("Nodelist lenght : " + nl2.getLength());
                                        for (int jj = 0; jj <nl2.getLength(); jj++) {


                                            Node nn =nl2.item(jj);
                                            System.out.println("name node22 inside " + parser.getValue((Element)nn, "name"));

                                        }

                                        //  map.put(KEY_TITLE,  parser.getValue((Element)child,KEY_TITLE ));
                                        //map.put(KEY_THUMB_URL, parser.getValue((Element)child, KEY_THUMB_URL));

                                        // adding HashList to ArrayList
                                        //songsList.add(map);

                                    }

                                }
                            }
                        }



                    }
为此:

Element e = (Element) n1.item(0);
NodeList nodeList2 = e.getElementsByTagName("edition");

我建议您使用模式匹配方法构建自己的解析器。因为它能让你根据自己的需要定制东西。
类似Gson的解析器将非常适合。

如果有帮助,请检查此选项。使用xml pullparser和ListFragment。谢谢我检查一下,你能帮我获取所有版本的名称吗,其中组名是目录等等?
Element e = (Element) n1.item(0);
NodeList nodeList2 = doc.getElementsByTagName("edition");
Element e = (Element) n1.item(0);
NodeList nodeList2 = e.getElementsByTagName("edition");