0

我想在我的 xml 中获取数据以及她的关联子数据:例如,我想获取 categorie2 中的所有 name3 以及该 name3 中的所有 name5 以及该 name5 中的所有 name7 等等......

目前我只知道如何获取所有 name3、所有 name 5 和所有 name7,但我不知道谁与谁关联。

如果您需要更多信息,请询问我。

感谢您的帮助。

编辑

我试过这个来获取数据:

 url3= new String("");
                    xml3 = parser.getXmlFromUrl(url3);
                    Document doc3 = parser.getDomElement(xml3);

                    //System.out.println(xml);

                    menuBase = new ArrayList<HashMap<String, String>>();

                    NodeList nodes = doc3.getElementsByTagName(KEY_CATEGORY_2);
                    for (int i = 0; i < nodes.getLength(); i++) {

                        HashMap<String, String> map = new HashMap<String, String>();
                        Element element = (Element) nodes.item(i);
                        NodeList title = element.getElementsByTagName(KEY_NAME_3);
                        Element line = (Element) title.item(0);

                        map.put(KEY_NAME_3, getCharacterDataFromElement(line));

                        menuBase.add(map);
                        menu1 = new ArrayList<ArrayList<HashMap<String, String>>>();

                        ArrayList<HashMap<String, String>> map1 = new ArrayList<HashMap<String, String>>();
                        NodeList n = doc3.getElementsByTagName(KEY_CATEGORY_4);
                        for (int y = 0; y < n.getLength(); y++) {
                            HashMap<String, String> map1bis = new HashMap<String, String>();
                            Element e = (Element) n.item(y);
                            NodeList title1 = e.getElementsByTagName(KEY_NAME_5);
                            Element line1 = (Element) title1.item(0);

                            map1bis.put(KEY_NAME_5, getCharacterDataFromElement(line1));

                            map1.add(map1bis);


                            menu1.add(map1);

                        }   

                    }

然后我尝试像这样创建菜单和子菜单:

for(int i=0;i<menuBase.size();i++){
    SubMenu x=menu.addSubMenu(menuBase.get(i).get(KEY_NAME_3).toString());
    for(int y=0;y<menu1.get(i).size();y++){
        SubMenu w=x.addSubMenu(menu1.get(i).get(y).get(KEY_NAME_5).toString());
    }
}

但是在每个菜单项中我都有我所有的子菜单项

4

1 回答 1

0

我终于得到了我的问题的解决方案:

NodeList nodes = doc3.getElementsByTagName(KEY_CATEGORY_2);
        int sum0=0;      
        for(int i=0;i<menuBase.size();i++){
            SubMenu x=menu.addSubMenu(changeToRegularForm(menuBase.get(i).get(KEY_NAME_3).toString()));
                int count0 = ((Element)(nodes.item(i))).getElementsByTagName(KEY_CATEGORY_4).getLength();
                System.out.println(count0);
                if(count0==0){
                    /*x.findItem(i).set*/
                }else{
                    for(int y=sum0;y<sum0+count0;y++){
                    SubMenu w=x.addSubMenu(changeToRegularForm(menu1.get(y).get(KEY_NAME_5).toString()));
                }

                }
                sum0+=count0;
        }

解释:最后我将所有子元素放在一个 arryList 中,但我使用一个函数来计算每个元素如何拥有子元素并拥有它们。

如果您需要更多信息/准确性,请询问。

于 2013-05-07T09:17:41.583 回答