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 d'un fichier xml particulier


Sujet :

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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 110
    Par défaut Parcours d'un fichier xml particulier
    Bonjour à tous,

    je débute en JAVA et donc je suis nouveau sur ce forum. Je souhaite

    analyser un fichier xml et en sortir des valeurs pour des traitements.

    Mon fichier 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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <ese>
       	<service nom="DG">
    		<Responsable>i</Responsable>
    		<email>o</email>
    	</service>
    	<service nom="it">
    		<Responsable>h</Responsable>
    		<email>a</email>
    	</service>
    	<service nom="compta">
    		<Responsable>d</Responsable>
    		<email>e</email>
    	</service>
    </ese>
    Mon objectif est de sortir pour chaque service le nom du responsable et son

    email.

    J'ai donc écris le code suivant dans éclipse:

    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
     
    import javax.xml.parsers.DocumentBuilderFactory;
    import javax.xml.parsers.DocumentBuilder;
    import org.xml.sax.SAXException;
    import org.xml.sax.SAXParseException;
    public class Test2 {
     
    	/**
             * @param args
             */
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		try {
     
                DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
                DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
                Document doc = docBuilder.parse (new File("D:/Projet/InfoService.xml"));
     
                doc.getDocumentElement ().normalize ();
                System.out.println ("Root element of the doc is " + 
                     doc.getDocumentElement().getNodeName());
     
                NodeList listOfPersons = doc.getElementsByTagName("service");
                int totalPersons = listOfPersons.getLength();
                System.out.println("Total no of people : " + totalPersons);
                NamedNodeMap att = listOfPersons.item(1).getAttributes();
                //System.out.println("Mon test : " + listOfPersons.item(1).getAttributes().item(0).getNodeValue());
                int i=0;
     
                for (i=0;i<totalPersons;i++)
                {
                	String mavar;
                	mavar = listOfPersons.item(i).getAttributes().item(0).getNodeValue();
     
        		}
     
     
            }catch (Throwable t) {
            t.printStackTrace ();
            }
     
    	}
     
    }
    Comme vous le voyer je reussis à sortir le nom des services mais pas les

    valeurs de responsable et email. J'ai fouillé sur internet, j'ai vu des exemples

    mais je n'ai toujours pas trouvé un exemple semblable au mien. En gros je sais

    pas comment accéder aux différents noeufs enfants d'une balise du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <service nom="DG">
    Si quelqu'un a une solution , je suis preneur... Merci d'avance

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 476
    Par défaut
    Salut,

    Lorsque tu itérres sur listOfPersons.item(i),
    tu récupères à chaque itération un objet Node qui correspond dans ton xml à chaque élément service.

    Par Ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <service nom="DG">
    	<Responsable>i</Responsable>
    	<email>o</email>
    </service>
    Ensuite, je pense qu'à partir du node récupéré à chaque itération(qui correspond ici à l'élément Service), tu peux récupérer ses éléments enfants en utilisant la méthode getChildNodes() qui te renvoie un objet de type NodeList, que tu sais apparemment déjà utiliser

    Tiens un petit exemple de code qui affiche le nom des éléments enfants de service et ses valeurs (tu noteras le if à cause des éléments vides qui correspondent aux blancs dans le xml) :
    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
     
    for (i = 0; i < totalPersons; i++) {
     
       Node node = listOfPersons.item(i);
       NodeList childNodes = node.getChildNodes();
     
       for (int j = 0; j < childNodes.getLength(); j++) {
          final Node currentChildElement = childNodes.item(j);
          final String eltName = currentChildElement.getNodeName();
          if (eltName.equals("Responsable") || eltName.equals("email")) {
             System.out.println("name=" + eltName);
             System.out.println("value=" + currentChildElement.getTextContent());
           }
       }
    }
    PS : si t'as le choix de l'api de manipulation du xml, je te conseille JDom, c'est une surcouche de Dom qui te facilitera le travail.

Discussions similaires

  1. [WD10] Parcours d'un fichier XML
    Par nuFox dans le forum WinDev
    Réponses: 2
    Dernier message: 13/04/2009, 11h40
  2. [XSLT] parcours d'un fichier XML
    Par kakid dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 17/05/2008, 18h14
  3. Parcours d'un fichier XML
    Par Amiba dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 19/09/2007, 14h31
  4. [DOM] Besoin d'optimiser le parcours d'un fichier XML
    Par stardeus dans le forum Format d'échange (XML, JSON...)
    Réponses: 19
    Dernier message: 08/04/2007, 17h04

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