IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Android et XML


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 14
    Par défaut Android et XML
    Bonsoir,

    J'ai un projet android a faire sur tablette.
    J’exécute des tests sur le parsage du XML et des intents (switch entre page).

    J'ai récupéré un tuto sur le parsage XML avec des flux RSS et son projet marche (heureusement ), bref je refais un projet et je code ligne par ligne son tuto en suivant les déclarations pour comprendre et le réadapter au mien car moi c'est pas un flux RSS que je dois parser et ça marche pas (dommage bien essayé ).

    J'ai l'impression que cela vient de ma déclaration array listclient que j'initialise a null mais je suis pas sur ???

    Je laisse mon projet en pièce jointe pour que l'on comprenne mieux mon problème, plus explicite que d'écrire le code a la nique ici je pense .

    Voila j’espère que l'on pourra repérer mon erreur car je l'a voit pas

    Je vous remercie d'avance
    Je précise que je pars du boulot donc je ne repondrai pas avant 18h40
    Fichiers attachés Fichiers attachés

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 14
    Par défaut
    Rebonjour,

    Après un debug plus complet aujourd'hui, je me recompte que l'erreur vient de mon parserXMLHandler.

    Il rentre dans le constructeur avec super(); et normalement il devrait continuer pour faire le traitement avec startdocument et insérer les cilents mais il zappe ce code et je ne comprend pas pourquoi ?

    Une ame charitable pour m'aider pls .

  3. #3
    Expert confirmé

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Par défaut
    Bonjour,

    Peux tu juste poster cette partie de code (parserXMLHandler) ainsi que son appel ?

    Merci

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 14
    Par défaut
    OK

    Voici le parserXmlHandler:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    package com.testandroid;
     
    import java.util.ArrayList;
     
    import org.xml.sax.Attributes;
    import org.xml.sax.SAXException;
    import org.xml.sax.helpers.DefaultHandler;
     
    public class ParserXMLHandler extends DefaultHandler 
    {
    	// Nom des tags XML
    	private final String T_CLIENT = "t_client";
    	private final String IDCLI = "idCli";
    	private final String NOMCLI = "nomCli";
    	private final String PRENOMCLI = "prenomCli";
     
    	// Arraylist Client
    	private ArrayList<ListClient> listClient;
     
    	//Boolean permettant de savoir si à l'interieur d'un client
    	private boolean inClient;
     
    	// Client courante
    	private ListClient currentClient;
     
    	// Buffer contenant données d'un tag XML
    	private StringBuffer buffer;
     
    	@Override
    	public void processingInstruction(String target, String data) throws SAXException 
    	{		
    		super.processingInstruction(target, data);
    	}
     
    	public ParserXMLHandler() 
    	{
    		super();		
    	}
     
    	// évenement permettant d'initialiser tout avant le début du parcours du document XML
    	@Override
    	public void startDocument() throws SAXException 
    	{
    		super.startDocument();
    		listClient = new ArrayList<ListClient>();
     
    	}
     
     
    	// Fonction étant déclenchée lorsque le parser trouve un tag XML
    	// C'est cette méthode que nous allons utiliser pour instancier un nouveau feed
    	@Override
    	public void startElement(String uri, String localName, String name,	Attributes attributes) throws SAXException 
    	{
    		// Réinitialise le buffer a chaque fois qu'il rencontre un item
    		buffer = new StringBuffer();
     
    		// localName contient le nom du tag rencontré
     
    		// Rencontre un tag T_CLIENT, Instanciation d'un nouveau client
    		if (localName.equalsIgnoreCase(T_CLIENT))
    		{			
    			this.currentClient = new ListClient();
    			inClient = true;
    		}
     
    		// Définir des actions à effectuer pour chaque T_CLIENT rencontré (Si l'on veut !!!)
    		if (localName.equalsIgnoreCase(IDCLI))
    		{
    			// Nothing to do	
    		}
    		if (localName.equalsIgnoreCase(NOMCLI))
    		{
    			// Nothing to do	
    		}
    		if (localName.equalsIgnoreCase(PRENOMCLI))
    		{	
    			// Nothing to do	
    		}
     
    	}
     
    	@Override
    	public void endElement(String uri, String localName, String name) throws SAXException 
    	{		
     
    		if (localName.equalsIgnoreCase(IDCLI))
    		{
    			if(inClient){				
    				// Les caractères sont dans l'objet buffer
    				this.currentClient.setIdCli(buffer.capacity());				
    				buffer = null;
    			}
    		}
    		if (localName.equalsIgnoreCase(NOMCLI))
    		{
    			if(inClient){				
    				this.currentClient.setNomCli(buffer.toString());				
    				buffer = null;
    			}
    		}
    		if (localName.equalsIgnoreCase(PRENOMCLI))
    		{	
    			if(inClient){				
    				this.currentClient.setPrenomCli(buffer.toString());				
    				buffer = null;
    			}
    		}
    		if (localName.equalsIgnoreCase(T_CLIENT))
    		{		
    			listClient.add(currentClient);
    			inClient = false;
    		}
    	}
     
     
    	public void characters(char[] ch,int start, int length)	throws SAXException
    	{		
    		String lecture = new String(ch,start,length);
    		if(buffer != null) buffer.append(lecture);      		
    	}
     
     
    	// cette méthode nous permettra de récupérer les données
    	public ArrayList<ListClient> getData()
    	{
    		return listClient;
    	}
     
    }


    et l'appel:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    // handler => gestonnaire du fichier XMl (opérations de parsing)
    		DefaultHandler handler = new ParserXMLHandler();
    		try 
    		{
    			// On parse le fichier XML
    			parseur.parse(XMLFile, handler);
     
    			// On récupère directement la liste des clients
    			listClient = ((ParserXMLHandler) handler).getData();
    		}
    		catch (SAXException e) 
    		{
    			e.printStackTrace();
    		} 
    		catch (IOException e) 
    		{
    			e.printStackTrace();
    		}
    Juste pour indication debug + point d'arret, il va jusqu'au constructeur de parserXMLHandler et il ne continue pas je pige pas pourquoi ?

    Merci de m'accorder du temps

  5. #5
    Membre averti
    Homme Profil pro
    Flex + Flex mobile + Android
    Inscrit en
    Février 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Flex + Flex mobile + Android

    Informations forums :
    Inscription : Février 2007
    Messages : 29
    Par défaut
    Hello

    je pense avoir le même problème que toi moi le parseur.parse renvois un nullpointerException

    Tu as suivi le tuto de cette page: http://thibault-koprowski.fr/2010/10...-sous-android/ ?

    Merci d'avance à vous

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 14
    Par défaut
    Oui c'est bien ce tuto et aussi celui de ce site

Discussions similaires

  1. Développement Android java xml
    Par Guerchi dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 26/01/2014, 12h07
  2. Problème XML DOM Java > Android
    Par frAydjwe dans le forum Android
    Réponses: 2
    Dernier message: 13/03/2012, 15h40
  3. Parser String xml Android
    Par tlili_info dans le forum Android
    Réponses: 1
    Dernier message: 17/05/2011, 10h18
  4. XML et Android
    Par cadeau10 dans le forum Android
    Réponses: 8
    Dernier message: 09/05/2011, 14h02
  5. Parser un XML sous Android - Il rate des lignes ?
    Par rXpCH dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 28/05/2010, 13h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo