CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: megthebest con ben 1 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: carotix con ben 4 Thanks ricevuti negli ultimi sette giorni
Utente del mese: megthebest con ben 21 Thanks ricevuti nell'ultimo mese

Visualizzazione dei risultati da 1 a 2 su 2
Discussione:

Errore Parsing xml response

Se questa discussione ti è stata utile, ti preghiamo di lasciare un messaggio di feedback in modo che possa essere preziosa in futuro anche per altri utenti come te!
  1. #1
    Baby Droid


    Registrato dal
    May 2009
    Messaggi
    5

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Errore Parsing xml response

    Salve sto effettuando una chiamata ad un webserver tramite ksoap,la chiamata va a buon fine,il problema ora è la pulizia della stringa che ricevo.Ho bisogno di sistemarla e memorizzare dei dati che dovrò usare in una seconda activity.Ho scritto un parser utilizzando xmlPullParser:
    x
     
    1
    public class ProdottiConcorsoHandler {
    2
    3
            private ArrayList<ProdottoConcorsiPortale> L;
    4
            private StringReader xmlResponse;
    5
            
    6
            public ProdottiConcorsoHandler(String xml)
    7
            {
    8
                    xmlResponse = new StringReader(xml);
    9
                    
    10
            }
    11
            
    12
            public ArrayList<ProdottoConcorsiPortale> parse() throws IOException,XmlPullParserException
    13
            {
    14
                    XmlPullParser parser = Xml.newPullParser();
    15
                    
    16
             try{   
    17
                     Log.i("ProdottiHandler","Sono nel try");
    18
                    parser.setInput(xmlResponse);
    19
                    Log.i("SetInput","xmlResponse");
    20
                    
    21
                    ProdottoConcorsiPortale currentProdotto = null;
    22
                      int eventType = parser.getEventType();
    23
                      Log.i("eventType","get" + parser.getEventType());
    24
                        while(eventType != XmlPullParser.END_DOCUMENT)
    25
                         {
    26
                            String nomeNodo;
    27
                              switch(eventType)
    28
                               {
    29
                              case XmlPullParser.START_DOCUMENT :
    30
                                      L = new ArrayList<ProdottoConcorsiPortale>();
    31
                                  break;
    32
                              case XmlPullParser.START_TAG :
    33
                                      nomeNodo = parser.getName();
    34
                                       if(nomeNodo.equalsIgnoreCase("soap:Envelope"))
    35
                                        {
    36
                                               Log.i("1","Aperto tag Envelope");
    37
                                        }
    38
                                       else if(nomeNodo.equalsIgnoreCase("soap:Body"))
    39
                                        {
    40
                                               Log.i("2","Aperto tag Body");
    41
                                        }
    42
                                       else if(nomeNodo.equalsIgnoreCase("GetProdottiConcorsoResponse"))
    43
                                        {
    44
                                               Log.i("3","Aperto tag GetProdottiConcorsoResponse");   
    45
                                        }
    46
                                       else if(nomeNodo.equalsIgnoreCase("GetProdottiConcorsoResult"))
    47
                                        {
    48
                                               Log.i("4","Aperto tag GetProdottiConcorsoResult");   
    49
                                        }
    50
                                       else if(nomeNodo.equalsIgnoreCase("ProdottoConcorsiPortale"))
    51
                                        {
    52
                                               currentProdotto = new ProdottoConcorsiPortale();
    53
                                               Log.i("5","Aperto tag ProdottoConcorsiPortale");   
    54
                                        }
    55
                                       else if(nomeNodo.equalsIgnoreCase("ID"))
    56
                                        {
    57
                                               currentProdotto.setId(Integer.parseInt(parser.nextText()));
    58
                                               Log.i("6","Aperto tad ID");
    59
                                        }
    60
                                       else if(nomeNodo.equalsIgnoreCase("Descrizione"))
    61
                                        {
    62
                                                Log.i("7","Aperto tag Descrizione");
    63
                                            currentProdotto.setDescrizione(parser.nextText());
    64
                                        }
    65
                                       else if(nomeNodo.equalsIgnoreCase("QuantitàMinima"))
    66
                                       {
    67
                                               Log.i("8","Aperto tag Quantità Minima"); 
    68
                                               currentProdotto.setQuantitaMinima(Double.parseDouble(parser.nextText()));
    69
                                       }
    70
                                       else if(nomeNodo.equalsIgnoreCase("ID_CONCORSO"))
    71
                                       {
    72
                                               Log.i("9","Aperto tag ID_CONCORSO");
    73
                                                currentProdotto.setID_CONCORSO(Integer.parseInt(parser.nextText()));
    74
                                       }
    75
                                       break;
    76
                              case XmlPullParser.END_TAG :
    77
                                      nomeNodo = parser.getName();
    78
                                       if(nomeNodo.equalsIgnoreCase("ProdottoConcorsiPortale"))
    79
                                       {
    80
                                               L.add(currentProdotto);
    81
                                               
    82
                                       }
    83
                                       break;
    84
                               }
    85
                              eventType = parser.next();
    86
                         }
    87
              }catch(IOException e)
    88
                {
    89
                      Log.i("Errore","" + e.toString());
    90
                }
    91
               catch(XmlPullParserException e)
    92
                {
    93
                       Log.i("Errore","" + e.toString());   
    94
                }
    95
                       return L;
    96
            }
    97
            
    98
    }


    L'errore che ricevo è il seguente:


    05-25 07:18:47.795: INFO/Errore(360): org.xmlpull.v1.XmlPullParserException: Error parsing document. (position:line -1, column -1) caused by: org.apache.harmony.xml.ExpatParser$ParseException: At line 1, column 27: not well-formed (invalid token)

    è chiaro che non leggo bene la risposta ricevuta.L'xmlRicevuto è:

    22
     
    1
    <?xml version="1.0" encoding="utf-8"?>
    2
    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    3
    <soap:Body>
    4
    <GetProdottiConcorsoResponse xmlns="http://tempuri.org/">
    5
     <GetProdottiConcorsoResult>
    6
      <ProdottoConcorsiPortale>
    7
       <ID>2</ID>
    8
       <Descrizione>caffè</Descrizione>
    9
       <QuantitaMinima>0</QuantitaMinima>
    10
       <ID_Concorso>0</ID_Concorso>
    11
      </ProdottoConcorsiPortale>
    12
       <ProdottoConcorsiPortale>
    13
       <ID>1</ID>
    14
       <Descrizione>pizza</Descrizione>
    15
       <QuantitaMinima>0</QuantitaMinima>
    16
       <ID_Concorso>0</ID_Concorso>
    17
      </ProdottoConcorsiPortale>
    18
    </GetProdottiConcorsoResult>
    19
    </GetProdottiConcorsoResponse>
    20
    </soap:Body>
    21
    </soap:Envelope>
    22


    Leggendo il log,arriva fino
    1
     
    1
    Log.i("eventType","get" + parser.getEventType()); 

    che risulta essere pari a 0,quindi START_DOCUMENT

    Avete qualche suggerimento?

  2.  
  3. #2
    Baby Droid


    Registrato dal
    May 2011
    Messaggi
    25

    Ringraziamenti
    0
    Ringraziato 7 volte in 7 Posts

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire risposte
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Torna su
Privacy Policy