Error read xml from server. How to parse XML data into a ListView

  • Replies:1
Weblu Sea
  • Forum posts: 1

Feb 12, 2016, 2:16:46 PM via Website

Hello. I'm a quite new developer. I am programming by Android Studio. I am not able to fix the xml code from server to my app. (parse XML data into a ListView)

Here is my java code

public class SitesXmlPullParser {

static final String KEY_SITE = "array";
static final String KEY_TITLE = "title";
static final String KEY_PERIODITA = "periodIta";
static final String KEY_LINKZIP = "linkzip";
static final String KEY_IMAGE_URL = "image";

public static List<AtlantisSite> getAtlantisSiteFromFile(Context ctx) {

    // List of AtlantisSite.java that we will return
    List<AtlantisSite> AtlantisSite;
    AtlantisSite = new ArrayList<AtlantisSite>();

    // temp holder for current AtlantisSite while parsing (crate object)
    AtlantisSite curAtlantisSite = null;

    // temp holder for current text value while parsing
    String curText = "";

    try {
        // Get our factory and PullParser
        XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
        XmlPullParser xpp = factory.newPullParser();

        // Open up InputStream and Reader of our file.
        FileInputStream fis = ctx.openFileInput("issues.plist");
        BufferedReader reader = new BufferedReader(new InputStreamReader(fis));

        // point the parser to our file.
        xpp.setInput(reader);

        // get initial eventType
        int eventType = xpp.getEventType();

        // Loop through pull events until we reach END_DOCUMENT
        while (eventType != XmlPullParser.END_DOCUMENT) {
            // Get the current tag
            String tagname = xpp.getName();

            // React to different event types appropriately
            switch (eventType) {
                case XmlPullParser.START_TAG:
                    if (tagname.equalsIgnoreCase(KEY_SITE)) {
                        // If we are starting a new <site> block we need
                        //a new StackSite object to represent it
                        curAtlantisSite= new AtlantisSite();
                    }
                    break;

                case XmlPullParser.TEXT:
                    //grab the current text so we can use it in END_TAG event
                    curText = xpp.getText();
                    break;

                case XmlPullParser.END_TAG:
                    if (tagname.equalsIgnoreCase(KEY_SITE)) {
                        // if </site> then we are done with current Site
                        // add it to the list.
                        AtlantisSite.add(curAtlantisSite);
                    } else if (tagname.equalsIgnoreCase(KEY_TITLE)) {
                        // if </name> use setName() on curSite
                        curAtlantisSite.setTitle(curText);
                    } else if (tagname.equalsIgnoreCase(KEY_PERIODITA)) {
                        // if </link> use setLink() on curSite
                        curAtlantisSite.setperiodIta(curText);
                    } else if (tagname.equalsIgnoreCase(KEY_LINKZIP)) {
                        // if </about> use setAbout() on curSite
                        curAtlantisSite.setlinkzip(curText);
                    } else if (tagname.equalsIgnoreCase(KEY_IMAGE_URL)) {
                        // if </image> use setImgUrl() on curSite
                        curAtlantisSite.setImgUrl(curText);
                    }
                    break;

                default:
                    break;
            }
            //move on to next iteration
            eventType = xpp.next();
        }
    } catch (Exception e) {
        e.printStackTrace();
    }

    // return the populated list.
    return AtlantisSite;
}

}

and here is the xml source

a qplist version="1.0">
array>
dict>
key>Name
string>03_2012
key>Title
string>Atlantis 3 2012
key>PeriodIta
string>Ottobre / Novembre
key>PeriodEng
string>October / November
key>Date
date>2013-02-01T10:00:00Z
key>Cover
string>
http.....
string>
key>SummaryEng
string>
The bimonthly Italian American Magazine is always available on paper and you can subscribe it using purchase instruction on website. In this issue
key>SummaryIta
string>
La rivista bimestrale italo-americana, è sempre disponibile anche su carta e per riceverla è necessario abbonarsi utilizzando la procedura d
/string>
key>PriceIta
string>gratis
key>PriceEng
string>free
key>Content
string>
http:....
/string>
/dict>

dict>...
dict>...
dict>...
array>
plist>uote goes here

I am not able to fix it. can somebody give me some advices?

— modified on Feb 12, 2016, 2:29:53 PM

Reply
Ashish Tripathi
  • Forum posts: 211

Feb 19, 2016, 6:35:04 AM via Website

share the row xml data if still u r facing issue

Reply