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 :

calculer des sommes d'un fichier xml avec dom [DOM]


Sujet :

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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Juin 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2013
    Messages : 53
    Par défaut calculer des sommes d'un fichier xml avec dom
    j'ai un fichier 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
    <?xml version="1.0" encoding="ISO-8859-1" ?>
       <liste> 
        <client nom="Jean Charles"> 
            <transaction montant="500" />
     <question>Quelle est la dernière marque?</question>
            <transaction montant="1200" /> 
         </client> 
         <client nom="Pierre Élisabeth"> 
            <transaction montant="600" /> 
            <transaction montant="800" /> 
     <question>Où puis-je trouver le modèle 2002?</question>
            <transaction montant="2000" /> 
         </client> 
        </liste>
    je veux calcule la somme des valeurs de l'attribut « montant » pour chaque client pour avoir ce résultat :
    Nom du client: Jean Charles
    Somme: 1700
    Nom du client: Pierre Élisabeth
    Somme: 3400
    voila mon programme :
    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
    import org.w3c.dom.*;
     import javax.xml.parsers.*;
     
     public class transactions {
     public static void main(String[] args) throws Exception {
        DocumentBuilderFactory factory = 
         DocumentBuilderFactory.newInstance();
        DocumentBuilder parser = 
         factory.newDocumentBuilder();
        Document doc = parser.parse(args[0]);
        Element racine = doc.getDocumentElement(); 
        NodeList nl = racine.getElementsByTagName("client");
        for (int i = 0; i < nl.getLength(); ++i) {
           Element client = (Element) nl.item(i);
           NodeList tnom = client.getElementsByTagName("client");     
           Element nom = (Element) tnom.item(0); 
           System.out.println("nom du client :" +client.getAttribute("nom"));
           NodeList mn = doc.getElementsByTagName("transaction");     
           System.out.println("somme :" +mn.getLength("montant"));
     
     }
    }
     }
    j'ai réussie a avoir les nom des clients mes je connais pas la fonction vraiment qui peu calculer les sommes des montants avec DOM merci pour votre aide .

  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 : 55
    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
    Billets dans le blog
    2
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     NodeList mn = doc.getElementsByTagName("transaction");
    te donne la liste des élements transaction :

    tu dois parcourir cette liste :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for(int i=0; i<mn.getLength(); i++) {
        Element transaction = (Element)mn.item(i);
        ...
    }
    ensuite il faut lire l'attribut montant pour obtenir sa valeur. un attribut étant toujours de type String, tu vas devoir le convertir en int pour pouvoir en faire la somme


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for(int i=0; i<mn.getLength(); i++) {
        Element transaction = (Element)mn.item(i);
        int montant = Integer.parseInt(transaction.getAttribut("montant");
        ...
    }
    pour faire la somme de tous les montants, il te faut une variable, et ensuite cumuler chaque montant dans cette variable

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    int somme=0; // on initialise la somme à 0
    for(int i=0; i<mn.getLength(); i++) {
        Element transaction = (Element)mn.item(i);
        int montant = Integer.parseInt(transaction.getAttribut("montant");
        somme+=montant; // on ajoute le montant de la transaction à la somme
    }
    System.out.println("La somme des " + mn.getLength() + " transaction(s) du client "+client.getAttribute("nom")+" est : "+ somme);
    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 averti
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Juin 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2013
    Messages : 53
    Par défaut
    merci pour votre aide le programme fonction mes il donne pas le bon résultat pour la somme :
    nom du client : Jean Charles
    La somme des 5 transaction(s) du client Jean Charles est : 2500
    nom du client : Pierre Élisabeth
    La somme des 5 transaction(s) du client Pierre Élisabeth est : 2500
    il faut qui me donne :
    somme : 1700
    somme: 3400
    Merci

  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 : 55
    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
    Billets dans le blog
    2
    Par défaut
    j'avais pas vu que tu avais écrit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NodeList mn = doc.getElementsByTagName("transaction");
    donc tu as toutes les transactions du doc !!!

    avec ceci tu auras que les transaction de ton client

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NodeList mn = client.getElementsByTagName("transaction");
    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.

  5. #5
    Membre averti
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Juin 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2013
    Messages : 53
    Par défaut
    la sa me donne :
    somme : 1000
    somme : 1800

  6. #6
    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 : 55
    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
    Billets dans le blog
    2
    Par défaut
    euh, tu peux me recoller ton code stp ?
    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.

  7. #7
    Membre averti
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Juin 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2013
    Messages : 53
    Par défaut
    problème résolut merci beaucoup Joël DRIGO tes bien gentil

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

Discussions similaires

  1. [XL-2007] Extraire des données d'un fichier Xml avec des balises identiques
    Par Danieldu54 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/03/2011, 20h45
  2. Recuperation des noeuds d'un fichier xml avec xalan
    Par bellemlih dans le forum XML
    Réponses: 1
    Dernier message: 02/07/2008, 18h58
  3. [DOM] Php5 : créer un fichier xml avec Dom
    Par devadh dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 29/01/2007, 14h04
  4. [DOM] Comment generer ce fichier XML avec DOM ?
    Par jlassira dans le forum Format d'échange (XML, JSON...)
    Réponses: 18
    Dernier message: 10/04/2006, 09h12
  5. [DOM] [Débutant(e)] Modifier un fichier XML avec DOM
    Par macks dans le forum Format d'échange (XML, JSON...)
    Réponses: 6
    Dernier message: 05/07/2005, 14h13

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