myParser.getText始终返回null

时间:2016-06-07 15:23:56

标签: android xml xml-parsing

所以,我很漂亮,我正在尝试解析this xml以获取意大利电视节目列表。 但是当我使用myParser.getText时,它将返回null。 我实际进入节点,但它不会从中得到任何价值。

    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();
    }
}

现在我的日志不会返回任何原因因为myParser.getText为空,但是如果我只打印名称它实际上会返回我的节点。 getAttributeValue有效,但在这种情况下我需要它

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

2 个答案:

答案 0 :(得分:1)

我将假设您声明的变量channel, hour, programme, description是类变量?我不知道这些声明在哪里,但想确定一下。

至于getText()我认为你需要在TEXT事件中实际使用它,而不是START_TAG

  
    

的getText

  
     

在API级别1中添加了字符串getText()

     

以String形式返回当前事件的文本内容。价值   返回取决于当前事件类型,例如对于TEXT事件它   是元素内容(这是使用next()时的典型情况)。看到   nextToken()的描述可能的详细描述   返回不同类型事件的值。

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

答案 1 :(得分:0)

我知道我迟到但我想介绍simple framework进行xml解析。

通过将此行添加到app模块的build.gradle

来添加此库
compile 'org.simpleframework:simple-xml:2.5'

以下是可以帮助您解析xml的代码

<强>代码

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;
    }
}

<强>频道

@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;
    }
}

<强>程序

@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;
    }
}

<强>输出

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.