2016-06-07 157 views
1

所以,我很漂亮,我試圖解析this xml以獲得意大利電視節目的列表。 但是,當我使用myParser.getText它將返回null。 我真的進入節點,但它不會從它得到任何價值。現在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); 
+0

可能[XmlResourc的重複eParser。getText()返回null](http://stackoverflow.com/questions/32685464/xmlresourceparser-gettext-returning-null) –

回答

0

我知道我遲到了,但我想向大家介紹simple framework XML解析。

加入這一行的應用程序模塊

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

下面給出的的build.gradle添加這個庫的代碼,可以幫助您解析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); 
    } 
} 

電視

@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. 
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()

+0

工作,thak你。 – Lucas