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 :

Parcours fichier XML


Sujet :

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

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4
    Par défaut Parcours fichier XML
    Bonjour,

    Nous devons faire un programme qui, en mode console, retourne un fichier XML, en prenant un élément de ce fichier comme paramètre de recherche, cependant après avoir fait le code, on se retrouve avec :
    Exception in thread "main" java.lang.NullPointerException
    at mairies.RechParInsee.RechInsee(RechParInsee.java:24)
    at mairies.RechParInsee.main(RechParInsee.java:86)
    Nous ne voyons pas comment résoudre ce soucis.

    le code est le suivant :
    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
    package mairies;
     
    import java.io.File;
    import java.io.IOException;
     
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import javax.xml.parsers.ParserConfigurationException;
     
    import org.w3c.dom.Document;
    import org.w3c.dom.Element;
    import org.w3c.dom.Node;
    import org.w3c.dom.NodeList;
    import org.xml.sax.SAXException;
     
     
    public class RechParInsee  {
     
    public String RechInsee (String organismes, String insee) throws SAXException, IOException {
     
    		File Organisme = new File( organismes );
    		File[]list=Organisme.listFiles();
     
    		for (int j=0;j<list.length; j++){
    			String t[]=(list[j].getName().split("-"));
     
    				if ((t[0].compareToIgnoreCase("mairie"))==0){
    					DocumentBuilder dBuilder = null;
     
    						try {
     
    						DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
    		  				dBuilder = dbFactory.newDocumentBuilder();
     
    						} catch (ParserConfigurationException e ) {
    							System.err.println("impossible");
    							System.exit(0);
    						}
     
    						Document doc=dBuilder.parse(new File (list[j].getPath()));
    						doc.getDocumentElement().normalize();
    						Element e =doc.getDocumentElement();
     
    						if ((e.getAttribute(insee)).compareTo(insee)==0){
     
    							NodeList nodes = doc.getElementsByTagName("Organisme");
    							for (int i = 0; i < nodes.getLength(); i++) {
    								Node node = nodes.item(i);
     
    									if (node.getNodeType() == Node.ELEMENT_NODE) {
     
    										 e = (Element) node;
     
    										System.out.println(getValue("Nom", e) +":"+ "\n");
    										System.out.println("INSEE : " + e.getAttribute("codeInsee"));
    										System.out.println("Code Postal : " + getValue("CodePostal", e));
    										System.out.println("Ville :" + getValue("NomCommune", e));
    										System.out.println("Numéro de Téléphone : " + getValue("Téléphone", e));
    										System.out.println("Adresse Mail : " + getValue("Email", e));
    										System.out.println("Site Web : " + getValue("Url", e)+"\n");
    									}
    							}
     
    						}
     
    				}
     
    		}
     
    		 return "La mairie recherchée a été trouvée";
    	}
     
    	private static String getValue(String Organisme, Element element) {
    		NodeList nodes = element.getElementsByTagName(Organisme).item(0).getChildNodes();
     
    		Node node = (Node) nodes.item(0);
    		return node.getNodeValue();
     
    	}
     
    	public static void main(String[]args) throws SAXException, IOException{
    		RechParInsee fbgseth  =new RechParInsee();
    		fbgseth.RechInsee("Organisme","95002");
     
    	}
    }
    Merci pour vos éventuelles réponses.

    A bientôt

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    ton listFiles retourne null, ce qu veux dire qu'il n'a pas trouvé le répertoire "Organismes". Met le chemin complet vers le répertoire.

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4
    Par défaut
    C'est bon, merci je n'ai plus cette erreur, mon seul soucis est que je n'arrive pas à avoir le bon affichage, j'ai mis une ligne de commentaire dans mon main qui s'affiche donc le probleme ne vient pas de là, j'ai donc fais étapes par étapes et arriver dans le 1er "if", cette ligne ne s'afficher plus mais je ne comprends pas où est l'erreur.

    Pourriez vous m'aider ?
    Merci

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par ClineB Voir le message
    je n'arrive pas à avoir le bon affichage
    Quel est ton code maintenant? Tu as quoi comme affichage. Tu devrais avoir quoi?

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4
    Par défaut
    Voici mon code:

    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
    package mairies;
     
    import java.io.File;
    import java.io.IOException;
     
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import javax.xml.parsers.ParserConfigurationException;
     
    import org.w3c.dom.Document;
    import org.w3c.dom.Element;
    import org.w3c.dom.Node;
    import org.w3c.dom.NodeList;
    import org.xml.sax.SAXException;
     
     
    public class RechParInsee  {
     
    public String RechInsee (String Mairies, String insee) throws SAXException, IOException {
     
    		File Organisme = new File( "C:/Users/Céline/Documents/Cours/Fac/L2/Java/Projava" );
    		File[]list=Organisme.listFiles();
     
     
    		for (int j=0;j<list.length; j++){
    			String t[]=(list[j].getName().split("-"));
     
    				if ((t[0].compareToIgnoreCase("C:/Users/Céline/Documents/Cours/Fac/L2/Java/Projava/Mairies"))==0){
     
    					DocumentBuilder dBuilder = null;
     
    						try {
     
    						DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
    		  				dBuilder = dbFactory.newDocumentBuilder();
     
    						} catch (ParserConfigurationException e ) {
    							System.err.println("impossible");
    							System.exit(0);
    						}
     
    						Document doc=dBuilder.parse(new File (list[j].getPath()));
    						doc.getDocumentElement().normalize();
    						Element e =doc.getDocumentElement();
     
    						if ((e.getAttribute("insee")).compareTo("insee")==0){
     
    							NodeList nodes = doc.getElementsByTagName("Organisme");
    							for (int i = 0; i < nodes.getLength(); i++) {
    								Node node = nodes.item(i);
     
    									if (node.getNodeType() == Node.ELEMENT_NODE) {
     
    										Element element = (Element) node;
     
    										System.out.println(getValue("Nom", element) +":"+ "\n");
    										System.out.println("INSEE : " + element.getAttribute("codeInsee"));
    										System.out.println("Code Postal : " + getValue("CodePostal", element));
    										System.out.println("Ville :" + getValue("NomCommune", element));
    										System.out.println("Numéro de Téléphone : " + getValue("Téléphone", element));
    										System.out.println("Adresse Mail : " + getValue("Email", element));
    										System.out.println("Site Web : " + getValue("Url", element)+"\n");
    									}
    							}	
     
    						}
     
    					}
     
    				}
     
    		 return "La mairie recherchée a été trouvée";
     
     
     
    	}
     
     
    	private static String getValue(String Organisme, Element element) {
    		NodeList nodes = element.getElementsByTagName(Organisme).item(0).getChildNodes();
     
    		Node node = (Node) nodes.item(0);
    		return node.getNodeValue();
     
    	}
     
    	public static void main(String[]args) throws SAXException, IOException{
    		System.out.println(".................");
    		RechParInsee fbgseth  =new RechParInsee();
    		System.out.println(".................");
    		fbgseth.RechInsee("C:/Users/Céline/Documents/Cours/Fac/L2/Java/Projava","95002");
    		System.out.println(".................");
     
    	}
    }

    Je devrais avoir l'affichage present dans le dernier if, c'est à dire, la ville, le code postal ect
    Et j'ai seulement les ligne de ".......", que j'ai mis en plus dans mon main pour savoir si il fonctionnait correctement.

    Mon affichage donne:

    .................
    .................
    .................

  6. #6
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if ((t[0]
    					.compareToIgnoreCase("C:/Users/Céline/Documents/Cours/Fac/L2/Java/Projava/Mairies")) == 0)
    Tu ne rentrera jamais dans ton if. t[0] proviens de File.getName() qui, comme l'indique sa java doc, n'inclue pas le réperoire. Donc au minimum, ton test devrait être

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if ((t[0]
    					.compareToIgnoreCase("Mairies")) == 0)
    qui peux être simplifié en

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (t[0].equalsIgnoreCase("Mairies"))
    PS: tu pourrais faire un effort pour indenter ton code et le mettre entre balises code? C'est très dur à lire comme tu le fais

  7. #7
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4
    Par défaut
    Oui c'est ce que j'avais fais mais ça ne fonctionnait donc j'ai rechangé, mais ça ne fonctionne toujours pas.

    Désolé, je n'avais pas vu pour les balises code.

  8. #8
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Si il ne t'affiche rien, c'est qu'il n'y a aucun document / balise qui correspond aux critères que tu as placés. Ton code peux foirer à pas mal d'endroits donc le plus simple est de faire du pas à pas ou de mettre des messages de debugages un peu partout pour savoir ce que fait le code. Je dirais à vue de nez que ceci est suspect,j mais je n'ai pas d'idée de ce à quoi doit ressembler le document xml donc...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ((e.getAttribute("insee")).compareTo("insee")==0)
    tu es sur que ce n'est pas plutot à la variable insee que tu veux comparer là? Et arrête d'utiliser des compareTo ==0, utilise equals, comme tout le monde, c'est vachement plus lisible

  9. #9
    Membre Expert Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Par défaut
    Avec ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String t[]=(list[j].getName().split("-"));
    if ((t[0].compareToIgnoreCase("C:/Users/Céline/Documents/Cours/Fac/L2/Java/Projava/Mairies"))==0){
    ... aucune chance.

    Avec ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String t[]=(list[j].getName().split("-"));
    if ((t[0].compareToIgnoreCase("Mairies"))==0
    c'est un jeu equitable.

Discussions similaires

  1. Problème parcours fichier xml.
    Par imen1986 dans le forum APIs
    Réponses: 9
    Dernier message: 17/05/2010, 01h34
  2. Parcours fichier xml
    Par oclone dans le forum C#
    Réponses: 3
    Dernier message: 13/05/2009, 11h08
  3. Qt + parcours fichier xml
    Par sofuzion dans le forum Qt
    Réponses: 9
    Dernier message: 27/03/2009, 14h16
  4. [XPATH] parcours fichier xml : performances
    Par loic72 dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 25/02/2008, 16h01
  5. Parcours fichier xml
    Par Christophe Charron dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 22/05/2006, 20h37

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