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

XML/XSL et SOAP Discussion :

Bloquée sur la mise à jour a partir d'un fichier txt et d'un fichier xml en java et Dom [Débutant(e)]


Sujet :

XML/XSL et SOAP

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 62
    Points : 38
    Points
    38
    Par défaut Bloquée sur la mise à jour a partir d'un fichier txt et d'un fichier xml en java et Dom
    Bonjour a vous tous!

    Je doit mette à jour un fichier inventaire.xml a partir d'un fichier Achats.txt
    Mais je ne réussi pas a entre dans ma boucle et faire la modification
    pouriez-vous m'aider a trouver le problème
    merci...
    voici le fichier Achats.txt

    Jean Charles, 3214324565, 321, 2
    Yvan Richard, 5435435545, 321, 1
    Yvette Gagnon, 4324324243, 1, 12
    voici le fichier inventaire.xml


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
    <inventaire>
     <produit code="1" prix="432.00" quantité="43"/>
     <produit code="32" prix="32.00" quantité="100"/>
     <produit code="321" prix="31.00" quantité="200"/>
    </inventaire>
    et voici mon code

    Code Java : 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
    public class inventaire6 {
      public static void main(String[] args) throws Exception {
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        factory.setNamespaceAware(true);
        DocumentBuilder parser = factory.newDocumentBuilder();
        Document doc = parser.parse("inventaire.xml");
        Element racine = doc.getDocumentElement();
        NodeList nl = racine.getChildNodes();
     
        FileReader fichier = new FileReader("achats.txt");
        BufferedReader br = new BufferedReader(fichier);
        String ligne = null;
     
        while ((ligne = br.readLine()) != null) {
            String str[] =ligne.split(",");
            System.out.println(str[2] +","+str[3]);
     
            NodeList n2 = racine.getElementsByTagName("produit");
            for (int i = 0; i < n2.getLength(); ++i) {
                   Element produit = (Element) n2.item(i);
                   System.out.println(produit.getTagName());
                   // ### ICI LE CODE QUI POSE PROBLÈME à mon avis
                   if (produit.getAttribute("code").equals(str[2]))
                    {    System.out.println(str[2] +","+str[3]);
                      produit.setAttribute("quantite",Integer.toString(Integer.parseInt produit.getAttribute("quantité")) - (Integer.parseInt(str[3]))));
                    }
                   // ### FIN
            }
        }
        br.close();
     
     
    TransformerFactory tfact = TransformerFactory.newInstance();
        Transformer transformer = tfact.newTransformer();
        transformer.setOutputProperty("encoding", "ISO-8859-1");
        DOMSource source = new DOMSource(doc);
        FileWriter fw = new FileWriter("inventaire.xml");
        StreamResult result = new StreamResult(fw);
        transformer.transform(source, result);
     
     }}


    J'ai indiqué le code qui d'après moi cause problème
    Merci encore de votre temps...

  2. #2
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    Les espaces blancs ne sont pas ignorés automatiquement a priori, par conséquent, il faut en tenir compte. Laissez la methode faire son travail comme ça.
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    //String str[] =ligne.split(",");
    String str[] =ligne.split(",\\s*");

    Si, par malheur, on pense librement à ajouter les espaces blancs comme cost=" 32" etc ou à csv comme " Jean Charles, 3214324565, 321, 2 ", on peut aussi contemplater à utiliser trim() généralisée, comme ça.
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    //if (produit.getAttribute("code").equals(str[2]))
    if (produit.getAttribute("code").trim().equals(str[2].trim()))
    Ce n'est pas joli joli, mais parfois, ça arrive.

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 62
    Points : 38
    Points
    38
    Par défaut
    Citation Envoyé par tsuji Voir le message
    Les espaces blancs ne sont pas ignorés automatiquement a priori, par conséquent, il faut en tenir compte. Laissez la methode faire son travail comme ça.
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    //String str[] =ligne.split(",");
    String str[] =ligne.split(",\\s*");

    Si, par malheur, on pense librement à ajouter les espaces blancs comme cost=" 32" etc ou à csv comme " Jean Charles, 3214324565, 321, 2 ", on peut aussi contemplater à utiliser trim() généralisée, comme ça.
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    //if (produit.getAttribute("code").equals(str[2]))
    if (produit.getAttribute("code").trim().equals(str[2].trim()))
    Ce n'est pas joli joli, mais parfois, ça arrive.

    Merci de ta réponse ça fonctionne pour la boucle
    mais plutôt de modifier l'attribut il ajoute l'attribut quantité
    pourtant j'ai bien un setAttribute

  4. #4
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    mais plutôt de modifier l'attribut il ajoute l'attribut quantité
    pourtant j'ai bien un setAttribute
    Quoi ? comment ? Comment cela résulte en deux attributes nommés quantité ?

    Il y a une error dans la ligne setAttribute() : elle manque un parenthèse "(" après le premier Integer.parseInt. Il ne compile pas, mais il ne résulte pas deux attributes quantité, c'est impossible.

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 62
    Points : 38
    Points
    38
    Par défaut Merci de ton temps et de ta patience
    Citation Envoyé par tsuji Voir le message
    Quoi ? comment ? Comment cela résulte en deux attributes nommés quantité ?

    Il y a une error dans la ligne setAttribute() : elle manque un parenthèse "(" après le premier Integer.parseInt. Il ne compile pas, mais il ne résulte pas deux attributes quantité, c'est impossible.
    voici la ligne de code

    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    produit.setAttribute("quantite",(Integer.toString(Integer.parseInt(produit.getAttribute("quantité")) - (Integer.parseInt(str[3].trim())))));


    et voici le résultat de l'execution

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <inventaire>
     <produit code="1" prix="432.00" quantite="31" quantité="43"/>
     <produit code="32" prix="32.00" quantité="100"/>
     <produit code="321" prix="31.00" quantite="199" quantité="200"/>
    </inventaire>
    il manque la première soustraction du code 321 qui est 2 et comme vous pouvez le constater
    il ajout bien l'attribut quantité plutôt de la modifier

    Merci encore de ton aide

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Hello,

    ben il y en a un avec accent et l'autre sans accent -_-°.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 62
    Points : 38
    Points
    38
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Hello,

    ben il y en a un avec accent et l'autre sans accent -_-°.
    Ta raison et la sa marche trés bien
    UN GROS MERCI

  8. #8
    Candidat au Club
    Homme Profil pro
    Haiti
    Inscrit en
    Juin 2018
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Haiti
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2018
    Messages : 1
    Points : 2
    Points
    2
    Par défaut probleme d'affichage, non resolu
    Citation Envoyé par emykev22 Voir le message
    voici la ligne de code

    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    produit.setAttribute("quantite",(Integer.toString(Integer.parseInt(produit.getAttribute("quantité")) - (Integer.parseInt(str[3].trim())))));


    et voici le résultat de l'execution

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <inventaire>
     <produit code="1" prix="432.00" quantite="31" quantité="43"/>
     <produit code="32" prix="32.00" quantité="100"/>
     <produit code="321" prix="31.00" quantite="199" quantité="200"/>
    </inventaire>
    il manque la première soustraction du code 321 qui est 2 et comme vous pouvez le constater
    il ajout bien l'attribut quantité plutôt de la modifier

    Merci encore de ton aide

  9. #9
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Bonjour Ramices.

    Si tu essaies de dire quelque chose, je ne comprends pas quoi. Pourrais-tu essayer d'être plus clair ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 24/09/2013, 14h30
  2. Erreur sur Requête Mise à Jour
    Par guenfood dans le forum Access
    Réponses: 1
    Dernier message: 06/06/2006, 08h51
  3. Mise à jour table à partir sous-formulaire
    Par Daniel MOREAU dans le forum Access
    Réponses: 6
    Dernier message: 19/05/2006, 09h26
  4. Mise à jour a partir d'un autre formulaire
    Par xboulney dans le forum Access
    Réponses: 8
    Dernier message: 28/02/2006, 21h55
  5. Mise à jour Pro à partir de licence Etudiant ?
    Par Neilos dans le forum C++Builder
    Réponses: 3
    Dernier message: 15/11/2005, 16h03

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