Lucas
Lucas

Reputation: 35

myParser.getText always return null

so, i'm pretty noob and I'm trying to parse this xml to get a list of italian tv programmes. But when i use myParser.getText it will return null. I actually get into the node but then it wont get any value from it.

    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("display-name")){
                        channel = myParser.getText();
                        Log.d(name+" -->",myParser.getText());
                    }
                    else if(name.equals("programme")){
                        hour = myParser.getAttributeValue(null,"start");
                        Log.d(name+" -->",hour);
                    }
                    else if(name.equals("title")){
                        programme = myParser.getText();
                        Log.d(name+" -->",myParser.getText());
                    }
                    else if(name.equals("desc")){
                        description =  myParser.getText();
                        Log.d(name+" -->",myParser.getText());
                    }
                    else {}
                    break;
                case XmlPullParser.END_TAG:
            }
            event = myParser.next();
        }
        parsingComplete = false;
    }

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

Now my log wont return anything cause myParser.getText is null, but if i print just the name it actually will return me the node. getAttributeValue works, but i need it in just this case

else if(name.equals("programme")){
                        hour = myParser.getAttributeValue(null,"start");
                        Log.d(name+" -->",hour);

Upvotes: 1

Views: 80

Answers (2)

Pankaj Nimgade
Pankaj Nimgade

Reputation: 4549

I know I am late but I would like to introduce simple framework for xml parsing.

to add this library by adding this line to the build.gradle of app module

compile 'org.simpleframework:simple-xml:2.5'

Given below is the code that may help you parse the xml

Code

public class TestDriveTv {

    public static void main(String[] args) throws Exception{

        String path = "http://tvprofil.net/xmltv/data/rai-1.it/weekly_rai-1.it_tvprofil.net.xml";
        URL url = new URL(path);
        HttpURLConnection httpURLConnection = (HttpURLConnection)url.openConnection();
        httpURLConnection.connect();


        Serializer serializer = new Persister();

        Tv tv = serializer.read(Tv.class, httpURLConnection.getInputStream());

        printText(tv.getSource_data_url());
        printText(tv.getSource_info_name());
        printText(tv.getSource_info_url());
        printText("\n");

        for (Programme programme:tv.getProgrammes()){

            printText("##Program##");

            printText(programme.getChannel());
            printText(programme.getStart());
            printText(programme.getStop());
            printText(programme.getTitle());
            printText(programme.getCategory());
            printText(programme.getDesc());

            printText("\n");
        }

    }

    public static String getPath() {
        return Paths.get("").toAbsolutePath().toString();
    }

    public static void printText(String text) {
        System.out.println("" + text);
    }
}

TV

@Root(name = "tv", strict = false)
public class Tv {

    @Attribute(name = "source-data-url", required = false)
    private String source_data_url;

    @Attribute(name = "source-info-name", required = false)
    private String source_info_name;

    @Attribute(name = "source-info-url", required = false)
    private String source_info_url;

    @ElementList(name = "programme",inline = true, required = false)
    private List<Programme> programmes;

    public String getSource_data_url() {
        return source_data_url;
    }

    public void setSource_data_url(String source_data_url) {
        this.source_data_url = source_data_url;
    }

    public String getSource_info_name() {
        return source_info_name;
    }

    public void setSource_info_name(String source_info_name) {
        this.source_info_name = source_info_name;
    }

    public String getSource_info_url() {
        return source_info_url;
    }

    public void setSource_info_url(String source_info_url) {
        this.source_info_url = source_info_url;
    }

    public List<Programme> getProgrammes() {
        return programmes;
    }

    public void setProgrammes(List<Programme> programmes) {
        this.programmes = programmes;
    }
}

Channel

@Root(name = "channel", strict = false)
public class Channel {

    @Attribute(name = "id", required = false)
    private String id;

    @Element(name = "display-name", required = false)
    private String display_name;

    @Element(name = "url", required = false)
    private String url;

    @Element(name = "icon", required = false)
    private String icon;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getDisplay_name() {
        return display_name;
    }

    public void setDisplay_name(String display_name) {
        this.display_name = display_name;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public String getIcon() {
        return icon;
    }

    public void setIcon(String icon) {
        this.icon = icon;
    }
}

Programme

@Root(name = "programme", strict = false)
public class Programme {

    @Attribute(name = "channel", required = false)
    private String channel;

    @Attribute(name = "start", required = false)
    private String start;

    @Attribute(name = "stop", required = false)
    private String stop;

    @Element(name = "title", required = false)
    private String title;

    @Element(name = "category", required = false)
    private String category;

    @Element(name = "desc", required = false)
    private String desc;

    public String getChannel() {
        return channel;
    }

    public void setChannel(String channel) {
        this.channel = channel;
    }

    public String getStart() {
        return start;
    }

    public void setStart(String start) {
        this.start = start;
    }

    public String getStop() {
        return stop;
    }

    public void setStop(String stop) {
        this.stop = stop;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getCategory() {
        return category;
    }

    public void setCategory(String category) {
        this.category = category;
    }

    public String getDesc() {
        return desc;
    }

    public void setDesc(String desc) {
        this.desc = desc;
    }
}

Output

http://tvprofil.net/xmltv/
Phazer XML servis 4.6
http://tvprofil.net


##Program##
rai-1.it
20160607060000 +0200
20160607063000 +0200
Il caffè di Raiuno
null
null


##Program##
rai-1.it
20160607063000 +0200
20160607064300 +0200
TG 1
vijesti
Segui gli appuntamenti quotidiani del Tg1, rivedi on line l'ultima edizione. Entra nel sito e scopri tutte le rubriche.


##Program##
rai-1.it
20160607064300 +0200
20160607064500 +0200
CCISS Viaggiare informati
vijesti
Lo spazio dedicato a chi si mette in viaggio. Informazioni su viabilità, condizioni meteorologiche, interruzioni stradali e percorsi alternativi con aggiornamenti in tempo reale.


##Program##
rai-1.it
20160607064500 +0200
20160607064900 +0200
Unomattina Estate
vijesti
Spazio alla cronaca, all'attualità, alla politica, al costume e al sociale con collegamenti con le sedi regionale e estere. In collaborazione con il Tg1, la conduzione è stata affidata a Mia Ceran e Alessio Zucchini, mentre la postazione web, dedicata alle agenzie e ai giornali esteri, sarà occupata da Antonia Varini.


##Program##
rai-1.it
20160607064900 +0200
20160607065000 +0200
Che tempo fa, informazione
vijesti
null


##Program##
rai-1.it
20160607065000 +0200
20160607065500 +0200
Unomattina Estate
vijesti
Spazio alla cronaca, all'attualità, alla politica, al costume e al sociale con collegamenti con le sedi regionale e estere. In collaborazione con il Tg1, la conduzione è stata affidata a Mia Ceran e Alessio Zucchini, mentre la postazione web, dedicata alle agenzie e ai giornali esteri, sarà occupata da Antonia Varini.


##Program##
rai-1.it
20160607065500 +0200
20160607070000 +0200
Parlamento Telegiornale
vijesti
Un breve panorama quotidiano sulle sedute di Camera e Senato. Un'agenda sull'attività parlamentare del giorno.


##Program##
rai-1.it
20160607070000 +0200
20160607071000 +0200
TG 1
vijesti
Segui gli appuntamenti quotidiani del Tg1, rivedi on line l'ultima edizione. Entra nel sito e scopri tutte le rubriche.


##Program##
rai-1.it
20160607071000 +0200
20160607073000 +0200
Unomattina Estate
vijesti
Spazio alla cronaca, all'attualità, alla politica, al costume e al sociale con collegamenti con le sedi regionale e estere. In collaborazione con il Tg1, la conduzione è stata affidata a Mia Ceran e Alessio Zucchini, mentre la postazione web, dedicata alle agenzie e ai giornali esteri, sarà occupata da Antonia Varini.


##Program##
rai-1.it
20160607073000 +0200
20160607073300 +0200
TG 1 L.I.S.
vijesti
Segui gli appuntamenti quotidiani del Tg1, rivedi on line l'ultima edizione. Entra nel sito e scopri tutte le rubriche.


##Program##
rai-1.it
20160607073300 +0200
20160607075300 +0200
Unomattina Estate
vijesti
Spazio alla cronaca, all'attualità, alla politica, al costume e al sociale con collegamenti con le sedi regionale e estere. In collaborazione con il Tg1, la conduzione è stata affidata a Mia Ceran e Alessio Zucchini, mentre la postazione web, dedicata alle agenzie e ai giornali esteri, sarà occupata da Antonia Varini.


##Program##
rai-1.it
20160607075300 +0200
20160607075500 +0200
Che tempo fa, informazione
vijesti
null


##Program##
rai-1.it
20160607075500 +0200
20160607080000 +0200
Unomattina Estate
vijesti
Spazio alla cronaca, all'attualità, alla politica, al costume e al sociale con collegamenti con le sedi regionale e estere. In collaborazione con il Tg1, la conduzione è stata affidata a Mia Ceran e Alessio Zucchini, mentre la postazione web, dedicata alle agenzie e ai giornali esteri, sarà occupata da Antonia Varini.


##Program##
rai-1.it
20160607080000 +0200
20160607082500 +0200
TG 1
vijesti
Segui gli appuntamenti quotidiani del Tg1, rivedi on line l'ultima edizione. Entra nel sito e scopri tutte le rubriche.


##Program##
rai-1.it
20160607082500 +0200
20160607082700 +0200
Che tempo fa, informazione
vijesti
null


##Program##
rai-1.it
20160607082700 +0200
20160607090000 +0200
Unomattina Estate
vijesti
Spazio alla cronaca, all'attualità, alla politica, al costume e al sociale con collegamenti con le sedi regionale e estere. In collaborazione con il Tg1, la conduzione è stata affidata a Mia Ceran e Alessio Zucchini, mentre la postazione web, dedicata alle agenzie e ai giornali esteri, sarà occupata da Antonia Varini.


##Program##
rai-1.it
20160607090000 +0200
20160607090300 +0200
TG 1
vijesti
Segui gli appuntamenti quotidiani del Tg1, rivedi on line l'ultima edizione. Entra nel sito e scopri tutte le rubriche.


##Program##
rai-1.it
20160607090300 +0200
20160607090500 +0200
Che tempo fa, informazione
vijesti
null


##Program##
rai-1.it
20160607090500 +0200
20160607093000 +0200
Unomattina Estate
vijesti
Spazio alla cronaca, all'attualità, alla politica, al costume e al sociale con collegamenti con le sedi regionale e estere. In collaborazione con il Tg1, la conduzione è stata affidata a Mia Ceran e Alessio Zucchini, mentre la postazione web, dedicata alle agenzie e ai giornali esteri, sarà occupata da Antonia Varini.


##Program##
rai-1.it
20160607093000 +0200
20160607093500 +0200
TG1 FLASH
vijesti
Segui gli appuntamenti quotidiani del Tg1, rivedi on line l'ultima edizione. Entra nel sito e scopri tutte le rubriche.


##Program##
rai-1.it
20160607093500 +0200
20160607100000 +0200
Unomattina Estate
vijesti
Spazio alla cronaca, all'attualità, alla politica, al costume e al sociale con collegamenti con le sedi regionale e estere. In collaborazione con il Tg1, la conduzione è stata affidata a Mia Ceran e Alessio Zucchini, mentre la postazione web, dedicata alle agenzie e ai giornali esteri, sarà occupata da Antonia Varini.


##Program##
rai-1.it
20160607100000 +0200
20160607100500 +0200
TG 1
vijesti
Segui gli appuntamenti quotidiani del Tg1, rivedi on line l'ultima edizione. Entra nel sito e scopri tutte le rubriche.


##Program##
rai-1.it
20160607100500 +0200
20160607104500 +0200
Unomattina Estate
vijesti
Spazio alla cronaca, all'attualità, alla politica, al costume e al sociale con collegamenti con le sedi regionale e estere. In collaborazione con il Tg1, la conduzione è stata affidata a Mia Ceran e Alessio Zucchini, mentre la postazione web, dedicata alle agenzie e ai giornali esteri, sarà occupata da Antonia Varini.


##Program##
rai-1.it
20160607104500 +0200
20160607113000 +0200
Reef Doctors - dottori a Hope Island, serie, Oltre la paura
serija
TELEFILM Reef Doctors - dottori a Hope Island - Oltre la paura 1^ Visione RAI.


##Program##
rai-1.it
20160607113000 +0200
20160607133000 +0200
Don Matteo 6 - st 06
serija
La Rai Radiotelevisione Italiana presenta Don Matteo 6 - Francesca e il lupo - La giostra dei desideri.
Lo chiamano il detective al servizio di Dio: è il prete investigatore, astuto e simpatico che concilia la tradizionale missione pastorale con la passione per l'investigazione. È Don Matteo Bondini.


##Program##
rai-1.it
20160607133000 +0200
20160607140000 +0200
TELEGIORNALE
vijesti
Segui gli appuntamenti quotidiani del Tg1, rivedi on line l'ultima edizione. Entra nel sito e scopri tutte le rubriche.


##Program##
rai-1.it
20160607140000 +0200
20160607140500 +0200
TG1 Economia
vijesti
Quotidiano di informazione sull'Azienda Italia A cura della Redazione Economico Sindacale.


##Program##
rai-1.it
20160607140500 +0200
20160607153500 +0200
Estate in diretta
show
Dalle ore 14.05 alle ore 15.50 Conduce: Arianna Ciampoli Dalle ore 16.40 alle ore 18.40 Conducono: Eleonora Daniele e Salvo Sottile Estate in diretta è un programma di attualità, cronaca e spettacolo. Sarà una grande finestra su tutti gli avvenimenti dellestate raccontati in studio e approfonditi da collegamenti in diretta e da servizi fumati. Un grande racconto popolare che vuole coinvolgere e appassionare il pubblico a casa sui grandi temi di interesse generale. La prima parte del programma s... (more at http://tvprofil.net)


##Program##
rai-1.it
20160607153500 +0200
20160607162700 +0200
SOAP Legami
null
null


##Program##
rai-1.it
20160607162700 +0200
20160607163000 +0200
Che tempo fa, informazione
vijesti
null


##Program##
rai-1.it
20160607163000 +0200
20160607164000 +0200
TG 1
vijesti
Segui gli appuntamenti quotidiani del Tg1, rivedi on line l'ultima edizione. Entra nel sito e scopri tutte le rubriche.


##Program##
rai-1.it
20160607164000 +0200
20160607184500 +0200
Estate in diretta
show
Dalle ore 14.05 alle ore 15.50 Conduce: Arianna Ciampoli Dalle ore 16.40 alle ore 18.40 Conducono: Eleonora Daniele e Salvo Sottile Estate in diretta è un programma di attualità, cronaca e spettacolo. Sarà una grande finestra su tutti gli avvenimenti dellestate raccontati in studio e approfonditi da collegamenti in diretta e da servizi fumati. Un grande racconto popolare che vuole coinvolgere e appassionare il pubblico a casa sui grandi temi di interesse generale. La prima parte del programma s... (more at http://tvprofil.net)


##Program##
rai-1.it
20160607184500 +0200
20160607200000 +0200
Reazione a Catena, quiz
show
null


##Program##
rai-1.it
20160607200000 +0200
20160607203000 +0200
TELEGIORNALE
vijesti
Segui gli appuntamenti quotidiani del Tg1, rivedi on line l'ultima edizione. Entra nel sito e scopri tutte le rubriche.


##Program##
rai-1.it
20160607203000 +0200
20160607233000 +0200
Wind Music Awards 2016, musica
null
null


##Program##
rai-1.it
20160607233000 +0200
20160607233300 +0200
TG1 60 Secondi
vijesti
Segui gli appuntamenti quotidiani del Tg1, rivedi on line l'ultima edizione. Entra nel sito e scopri tutte le rubriche.


##Program##
rai-1.it
20160607233300 +0200
20160608000000 +0200
Wind Music Awards 2016, musica
null
null


##Program##
rai-1.it
20160608000000 +0200
20160608012000 +0200
Porta a Porta
vijesti
La seconda serata di Rai Uno nel salotto di Bruno Vespa: con i suoi ospiti approfondisce i temi di attualità, cronaca e politica.

Upvotes: 0

Yoshi_64
Yoshi_64

Reputation: 306

I'm going to assume the variables you declared channel, hour, programme, description are class variables? I don't see where these are declared, but want to make sure.

As for getText() I think you need to actually use this in the TEXT event, not the START_TAG

getText

Added in API level 1 String getText ()

Returns the text content of the current event as String. The value returned depends on current event type, for example for TEXT event it is element content (this is typical case when next() is used). See description of nextToken() for detailed description of possible returned values for different types of events.

https://developer.android.com/reference/org/xmlpull/v1/XmlPullParser.html#getText()

Upvotes: 1

Related Questions