0

I am trying to use XmlPullParser to parse the xml file in a format like that

<BOOK bnumber="1">
<CHAPTER cnumber="1">
<VERS vnumber="1">abc</VERS>
<VERS vnumber="2">cde</VERS>
<VERS vnumber="3">fgh</VERS>
</CHAPTER>
<CHAPTER cnumber="2">
<VERS vnumber="1">abc</VERS>
<VERS vnumber="2">cde</VERS>
<VERS vnumber="3">fgh</VERS>
</CHAPTER>
</BOOK>

The following is the code I try to develop. What I want to do is put the data into an array so that i can call the data back and use it later. Can u give some advice on how to modify the code to suit for my purpose?

ArrayList<LinkedHashMap<String, ArrayList<LinkedHashMap<String, String>>>> array;
ArrayList<LinkedHashMap<String, String>> array2;
LinkedHashMap map,map_1 ;   


try {
                /** Handling XML */
                    XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
                factory.setNamespaceAware(true);
                XmlPullParser xpp = factory.newPullParser();
            /** Handling XML */


            /** Send URL to parse XML Tags */
            URL sourceUrl = new URL(
                    "http://123.com/mobile/1.xml");
            /** Create handler to handle XML Tags ( extends DefaultHandler ) */
             xpp.setInput(sourceUrl.openStream(), null);
             int eventType = xpp.getEventType();
             String currentTag = null;

             while (eventType != XmlPullParser.END_DOCUMENT) {
                 switch (eventType) {

                 case XmlPullParser.START_DOCUMENT:
                     System.out.println("START_DOCUMENT "+xpp.getName());

                     array = new ArrayList<LinkedHashMap<String, ArrayList<LinkedHashMap<String, String>>>>();

                     break;


                 case XmlPullParser.START_TAG:

                     if ("CHAPTER".equals(xpp.getName()))
                     {
                     array2 = new ArrayList<LinkedHashMap<String, String>>();
                     map_1 = new LinkedHashMap<String, Object>();
                     map_1.put("cnumber",xpp.getAttributeValue(0));

                     }
                     else if ("VERS".equals(xpp.getName()))
                     {
                     map = new LinkedHashMap<String, Object>();
                     String Vers_number = xpp.getAttributeValue(0);
                     String Vers_content=xpp.nextText();
                     map.put("vnumber",Vers_number);
                     map.put("vcontent",Vers_content);
                     array2.add(map);
                     }

                     break;


                 case XmlPullParser.END_TAG:
                     if ("CHAPTER".equals(xpp.getName()))
                     {
                    map_1.put("in",array2);
                    array.add(map_1);}
                     break;  
                 }

                 eventType = xpp.next();  
             }

             itemCount=array.size();

            }catch (Exception e) {
                System.out.println("XML Pasing Excpetion = " + e);
            }

Code to get back the data[I can't figure out how to do it, the following is and idea in my mind]

try{  
            for(int i=0;i<itemCount;i++)
            {

        ArrayList<LinkedHashMap<String, String>> ch=array.get(i).get("cnumber");
        ArrayList<LinkedHashMap<String, String>> in=array.get(i).get("in");



            }
Eric
  • 357
  • 1
  • 4
  • 14
  • http://www.java-samples.com/showtutorial.php?tutorialid=152 – Venky May 31 '12 at 06:25
  • I am not very familiar with your suggestion. Can u give a more clear instruction on how to handle the chapter and ArrayList> in [string the data of vers] – Eric May 31 '12 at 15:34

0 Answers0