2013-12-09 58 views
0

我有一個像[this] [1]一個XML文件,我需要根據"group name"XML解析和顯示數據列表視圖

得到所有"edition name"我要創建組列表名稱並單擊組名顯示版本名稱列表。 輸出:

enter image description here

的onclick目錄:

enter image description here

這個XML存在於不同的語言,有沒有什麼辦法讓所有的版本名稱,而不使用組名比較。

目前我使用類型標籤來獲取所有目錄 :

if(parser.getValue(ele2, "type").toString().equalsIgnoreCase("catalog")) 

但有些magazines也存在於catalogs型。所以沒有得到正確的結果 ..

如何讓所有的editions name其中group namecatalogs等等...

或者更好的方式來做到這一點..我不知道該代碼我使用是一個好方法。 請建議。

我的代碼:

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 = doc.getElementsByTagName("edition"); 

這樣:

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

檢查這是否有幫助http://stackoverflow.com/questions/20455890/using-fragment-for-listview/20455968#20455968。使用xml pullparser和ListFragment。 – Raghunandan

+0

謝謝我會檢查,你可以幫我獲取所有版本的名稱,其中組名稱是目錄等...? –

回答

0

我寧願建議你使用建立自己的解析器模式匹配方法。因爲它給你權力來根據你的需要定製事物。 Gson像解析器將是一個很好的選擇。

相關問題