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

Format d'échange (XML, JSON...) Java Discussion :

Problème de lecture avec DOM [DOM]


Sujet :

Format d'échange (XML, JSON...) Java

  1. #1
    Membre à l'essai
    Inscrit en
    Août 2004
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 15
    Points : 11
    Points
    11
    Par défaut Problème de lecture avec DOM
    Bonjour à tous,
    J'ai encore un problème avec mes fichiers XML et mon appli en JSP.
    Mon document XML se présente comme suit:
    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
     
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <BASES>
    <BANC>
    	<NOM name="cb" type="Text" description="Nom de la table relative a la bancaire">tablcb_0</NOM>
    	<M_EUR name="cb" type="Text" description="Nom du champ correspondant au montant en Euro des transactions en bancaire">montant</M_EUR>
    	<M_FRF name="cb" type="Text" description="Nom du champ correspondant au montant en Franc des transactions en bancaire">montant_cv</M_FRF>
    	<DEVISE name="cb" type="Text" description="Nom du champ correspondant a la devise en bancaire">codemonnaie</DEVISE>
    	<PAN name="cb" type="Text" description="Nom du champ correspondant au code Pan en bancaire">pan</PAN>
    	<NUMERO name="cb" type="Text" description="Nom du champ correspondant au numero commercant en bancaire">numcomm</NUMERO>
    	<DATEHEURE name="cb" type="Text" description="Nom du champ correspondant a la date et heure en bancaire">dateheure</DATEHEURE>
    	<TPV name="cb" type="Text" description="Nom du champ correspondant au numero du TPV en bancaire">numtpv</TPV>
    	<CAISSIERE name="cb" type="Text" description="Nom du champ correspondant au numero de caissiere en bancaire">caissiere</CAISSIERE>
    	<OPERATION name="cb" type="Text" description="Nom du champ correspondant a l'operation en bancaire">codetraitement</OPERATION>
    	<DATE_TELECOLLECTE name="cb" type="Text" description="Nom du champ correspondant a la date de telecollecte en bancaire">datetelecollecte</DATE_TELECOLLECTE>
    </BANC>
     
    <CHQ>
    	<NOM name="chq" type="Text" description="Nom de la table relative aux cheques">tablchq_2</NOM>
    	<M_EUR name="chq" type="Text" description="Nom du champ correspondant au montant en Euro des transactions en cheques">montant</M_EUR>
    	<M_FRF name="chq" type="Text" description="Nom du champ correspondant au montant en Franc des transactions en cheques">montant_cv</M_FRF>
    	<DEVISE name="chq" type="Text" description="Nom du champ correspondant a la devise en cheques">codemonnaie</DEVISE>
    	<PAN name="chq" type="Text" description="Nom du champ correspondant au code Pan en cheques">pan</PAN>
    	<NUMERO name="chq" type="Text" description="Nom du champ correspondant au numero commercant en cheques">numcomm</NUMERO>
    	<DATEHEURE name="chq" type="Text" description="Nom du champ correspondant a la date et heure en cheques">dateheure</DATEHEURE>
    	<TPV name="chq" type="Text" description="Nom du champ correspondant au numero du TPV en cheques">numtpv</TPV>
    	<CAISSIERE name="chq" type="Text" description="Nom du champ correspondant au numero de caissiere en cheques">caissiere</CAISSIERE>
    	<OPERATION name="chq" type="Text" description="Nom du champ correspondant a l'operation en cheques">codetraitement</OPERATION>
    	<DATE_TELECOLLECTE name="chq" type="Text" description="Nom du champ correspondant a la date de telecollecte en cheques">datetelecollecte</DATE_TELECOLLECTE>
    </CHQ>
    </BASES>
    Je souhaiterais récupérer les valeurs de chaque élément comme NOM, M_EUR, M_FRF...

    J'ai considéré ces éléments comme childNodes de BANC et CHQ et j'ai fais ce code en JAVA (après avoir parsé le fichier bien sûr et en avoir sorti un Document):
    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
    public void readXml (Document document){
    		Element rootElement = document.getDocumentElement();
    		NodeList rootList = rootElement.getElementsByTagName("BANC");
     
    		if(rootList.getLength()>0){
    			Node banc = rootList.item(0);
    			if (banc.hasChildNodes()){
    				NodeList cbList = banc.getChildNodes();
    				if (cbList.getLength()>0){
    					Node nom = cbList.item(0); 
    					Node v_banc = nom.getFirstChild();
    					name_banc = v_banc.getNodeValue();
    				}
     
    			}
    		}	
    	}
    Le problème est qu'à chaque fois, il m'affiche l'erreur: java.lang.NullPointerException ...
    Quelqu'un pourrait m'aider svp??
    Merci d'avance...

  2. #2
    Membre confirmé

    Inscrit en
    Juillet 2002
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 116
    Points : 514
    Points
    514
    Par défaut
    Une facon plus simple et plus élégante de faire ce que tu souhaites serait :

    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
     
    public void readXml (Document document)
    { 
          Element bases = document.getDocumentElement(); 
     
          NodeList list_banc = bases.getElementsByTagName("BANC"); 
     
          if(list_banc.getLength()>0)
          { 
             Element banc = (Element) rootList.item(0); 
    	 NodeList list_nom = banc.getElementsByTagName("NOM");
    	 if(list_nom.getLength()>0)
    	 {
    	 	Text nom = (Text)list_nom.item(0);
                 	String valeur = nom.getData();
             } 
          }    
    }

  3. #3
    Membre à l'essai
    Inscrit en
    Août 2004
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    Merci Debernad pour ton aide.
    Même si ça ressemble sensiblement à ce que j'ai fait, j'ai essayé de faire comment t'as dit de faire mais, à priori, il aime pas ça vu qu'il me sort une erreur "java.lang.ClassCastException".
    J'ai l'impression qu'il ne reconnait pas NOM, M_EUR... comme des NodeChilds de BANC par exp; il les considère comme des noeuds à part.
    Quelqu'un aurait une idée svp?
    Merci

  4. #4
    Membre à l'essai
    Inscrit en
    Août 2004
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    C'est bon, j'ai la solution (ça pourrait servir pour ceux qui rencontrent le même problème après moi):
    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
     
    public void readXml (Document document){ 
    		Element bases = document.getDocumentElement(); 
    	    NodeList list_banc = bases.getElementsByTagName("BANC");
    	    if(list_banc.getLength()>0){ 
    	    	Element bancaire = (Element) list_banc.item(0); 
    	    	NodeList list_nom = bancaire.getElementsByTagName("NOM");
    	    	if(list_nom.getLength()>0){
    	    		Node nom = list_nom.item(0);
    	    		Node name = nom.getFirstChild();
    	    		name_banc = name.getNodeValue();
    	    	} 
    	    	NodeList list_m_eur = bancaire.getElementsByTagName("M_EUR");
    	    	if(list_m_eur.getLength()>0){
    	    		Node montant = list_m_eur.item(0);
    	    		Node m_eur = montant.getFirstChild();
    	    		m_eur_banc = m_eur.getNodeValue();
    	    	} 
    // et ainsi de suite pour tous les nodechilds de BANC...
     
    	    }    
    	}

  5. #5
    Membre expérimenté
    Avatar de viena
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    1 071
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 071
    Points : 1 512
    Points
    1 512
    Par défaut
    tag resolu !
    Cours et tutoriels pour apprendre Java , FAQ Java, et Forum Java
    "La liberté de tout être s'arréte là où commence celle de l'autre... Respecter l'autre, c'est préserver sa liberté d'être, de penser et de vivre"

  6. #6
    Membre à l'essai
    Inscrit en
    Août 2004
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    Désolé!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de Lecture avec fread, feof retourne 16
    Par neoangelo5 dans le forum C
    Réponses: 10
    Dernier message: 14/04/2011, 15h37
  2. Réponses: 2
    Dernier message: 11/05/2010, 09h27
  3. Problème de lecture avec les Socket
    Par Kevin12 dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 18/03/2009, 15h40
  4. Problème de lecture avec un player audio ouvert par SWFobject
    Par ceddus dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 21/06/2007, 04h47
  5. [DEBUTANT] Problème de lecture avec un fscanf
    Par Pingouin dans le forum C
    Réponses: 26
    Dernier message: 28/05/2006, 18h10

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