jobin
jobin

Reputation: 1527

XML Parsing in Android getAttributeValue() returns null value

I am doing an application where i have to parse using XMLPullParser. But i couldn't the value of temperature and humidity using getAttributeValue(null,"value") of XMLPullParser.

Code:

public void parseXMLAndStoreIt(XmlPullParser myParser) {
        int event;
        String text=null;

        try {
            event = myParser.getEventType();

            while (event != XmlPullParser.END_DOCUMENT) {
                String name=myParser.getName();

                switch (event){
                    case XmlPullParser.START_TAG:
                        break;

                    case XmlPullParser.TEXT:
                        text = myParser.getText();
                        break;

                    case XmlPullParser.END_TAG:
                        Log.i(" name:",name);
                        if(name.equals("country")){
                            country = text;

                        }

                        else if(name.equals("humidity")){
                            Log.i("humidity:",name);
                            humidity = myParser.getAttributeValue(null,"value");
                        }

                        else if(name.equals("pressure")){
                            pressure = myParser.getAttributeValue(null,"value");
                        }

                        else if(name.equals("temperature")){
                            temperature = myParser.getAttributeValue(null,"value");
                        }

                        else{
                        }
                        break;
                }
                event = myParser.next();
            }
            parsingComplete = false;
        }

        catch (Exception e) {
            e.printStackTrace();
        }
    }

Upvotes: 0

Views: 728

Answers (1)

user5683995
user5683995

Reputation: 11

The first answer solve the problem to humidity, pressure and temperature, but cause the country field be blank. The code below solve this :

public void parseXMLAndStoreIt(XmlPullParser myParser) {
    int event;
    String text=null;
    try {
        event = myParser.getEventType();
        while (event != XmlPullParser.END_DOCUMENT) {
            String name=myParser.getName();
            switch (event){

                case XmlPullParser.START_TAG:

                    if ( !name.equals("country"))
                        text = myParser.getText();

                    if(name.equals("humidity")){
                        humidity = myParser.getAttributeValue(null,"value");
                    }
                    else if(name.equals("pressure")){
                        pressure = myParser.getAttributeValue(null,"value");
                    }
                    else if(name.equals("temperature")){
                        temperature = myParser.getAttributeValue(null,"value");
                    }
                    else{
                    }
                    break;

                case XmlPullParser.TEXT:

                    text = myParser.getText();
                    break;

                case XmlPullParser.END_TAG:

                    if(name.equals("country")){
                        country = text;
                    }
                    else {

                    }
                    break;


            }
            event = myParser.next();
        }
        parsingComplete = false;
    }

    catch (Exception e) {
        e.printStackTrace();
    }
}

Upvotes: 1

Related Questions