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 :

Remplir un tableau avec les attributs d'un fichier XML [DOM]


Sujet :

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

  1. #1
    Membre à l'essai
    Femme Profil pro
    mastère de recherche
    Inscrit en
    Août 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : mastère de recherche
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2013
    Messages : 11
    Points : 13
    Points
    13
    Par défaut Remplir un tableau avec les attributs d'un fichier XML
    Je veux remplir un tableau par la première attribut de chaque élément
    par exemple j'ai un document XML 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
     
    <root>
    <element name="time" idref="id1">
      <sub-elt1>val1</sub-elt1>
      <sub-elt2>val2</sub-elt2>
      <sub-elt3>val3</sub-elt3>
    </element>
    <element name="Place" idref="id2">
      <sub-elt1>val1</sub-elt1>
      <sub-elt2>val2</sub-elt2>
      <sub-elt3>val3</sub-elt3>
    </element>
    </root>
    je veux parcourir ce document pour avoir un tableau qui contient ensemble des noms des éléments : "time", "Place"
    voici mon code qui ne m'affiche rien.
    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
     
    package Exampl;
    import java.io.File;
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import org.w3c.dom.Document;
    import org.w3c.dom.NamedNodeMap;
    import org.w3c.dom.Node;
    import org.w3c.dom.NodeList;
     
    public class ParseXML5 {
    	 public static void main(String[] args) {
    	try {
     
    		File file = new File("E:\\expXML.xml");
     
    		DocumentBuilder dBuilder = DocumentBuilderFactory.newInstance()
    	                             .newDocumentBuilder();
     
    		Document doc = dBuilder.parse(file);
     
    		System.out.println("Root element :" + doc.getDocumentElement().getNodeName());
     
    		if (doc.hasChildNodes()) {
    			printNote(doc.getChildNodes());
     
    		}
     
    	    } catch (Exception e) {
    		System.out.println(e.getMessage());
    	    }
     
    	  }
     
    	  private static void printNote(NodeList nodeList) {
    		  String[] st= new String[10];
    		  int k = 0;
    	    for (int j = 0; j < nodeList.getLength(); j++) {
     
    		Node tempNode = nodeList.item(j);
     
    		// make sure it's element node.
    		if (tempNode.getNodeType() == Node.ELEMENT_NODE) {
     
    			if (tempNode.hasAttributes()) {
     
    				NamedNodeMap nodeMap = tempNode.getAttributes();
     
    				for (int i = 0; i < nodeMap.getLength(); i++) {
     
    					Node node = nodeMap.item(i);
    					System.out.println("attr name : " + node.getNodeName());
    					System.out.println("attr value : " + node.getNodeValue());
    					st[k]= node.getNodeName();
    					k++;
     
    				}
     
    			}
     
    		}
     
     
    	    }
     
    	  }
    	  }

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Le problème se situe dans cette portion
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    System.out.println("Root element :" + doc.getDocumentElement().getNodeName());
     
    		if (doc.hasChildNodes()) {
    			printNote(doc.getChildNodes());
     
    		}
    Ce sont les enfants du DocumentElement que tu dois parcourir, pas ceux du Document (voir justement la ligne qui affiche le nom du DocumentElement (<root>)).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre à l'essai
    Femme Profil pro
    mastère de recherche
    Inscrit en
    Août 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : mastère de recherche
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2013
    Messages : 11
    Points : 13
    Points
    13
    Par défaut
    Merci joel.drigo pour votre réponse
    j'ai pas compris le problème exactement mais j'ai essayé une autre méthode et ça marche
    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
     
    try{
    		final DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    		//création d'un parseur
    		DocumentBuilder builder = factory.newDocumentBuilder();
    		final Document document= builder.parse(new File("E:\\expXML.xml"));
    		//récupération de l'Element racine
    		Element racine = document.getDocumentElement();
    				final NodeList racineNoeuds = racine.getChildNodes();
    		//afficher le nom de chacun des nœuds
    		final int nbRacineNoeuds = racineNoeuds.getLength();
    		String[] st= new String[10];
    		  int k = 0;
    		for (int i = 0; i<nbRacineNoeuds; i++) {
    		    if(racineNoeuds.item(i).getNodeType() == Node.ELEMENT_NODE) {
    		        final Element elt = (Element) racineNoeuds.item(i);
     
    			st[k]= elt.getAttribute("name");
    			k++;
     
    		    }
     
    		}
    		 System.out.println("les dimensions sont:");
    		    for(int j=0;j<k;j++){
    		    	System.out.println(st[j]);
    		    }
     
    	}
    	catch (final ParserConfigurationException a) {
    	    a.printStackTrace();
    	}
    	catch (final SAXException b) {
    	    b.printStackTrace();
    	}

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Bah, ta nouvelle méthode elle fait exactement ce que j'ai dit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Element racine = document.getDocumentElement();
    		//vérifier que ce que nous venons de récupérer est bien l'élément racine
    		//System.out.println(racine.getNodeName());
    		//Pour récupérer tous les noeuds enfants de la racine
    		final NodeList racineNoeuds = racine.getChildNodes();
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

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

Discussions similaires

  1. [XL-2010] Remplir un tableau avec les résultats d'une fonction
    Par lotfidk dans le forum Excel
    Réponses: 3
    Dernier message: 10/04/2015, 07h34
  2. remplir un tableau avec les données d'une BDD
    Par info3licen dans le forum Langage
    Réponses: 5
    Dernier message: 18/12/2012, 12h10
  3. [XL-2003] Remplir un tableau avec les noms des cellules
    Par tioch dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/08/2011, 18h24
  4. [MySQL] remplir un tableau avec les noms des champs d'une table
    Par solidaritok dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 05/04/2007, 13h47
  5. Réponses: 2
    Dernier message: 15/12/2006, 14h22

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