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

APIs XML Discussion :

Mettre à jour un fichier *.XML à partir d'un fichier *.txt


Sujet :

APIs XML

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Mars 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mars 2012
    Messages : 5
    Points : 5
    Points
    5
    Par défaut Mettre à jour un fichier *.XML à partir d'un fichier *.txt
    Bonjour!
    J' ai un fichier "achat.txt" qui contient chaque achat sur une ligne avec des informations séparées par des virgules.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     Jean Charles, 3214324565, 321, 2
     Yvan Richard, 5435435545, 321, 1
     Yvette Gagnon, 4324324243, 1, 12
    J'ai un fichier "inventaire.XML" qui contient mon inventaire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?xml version="1.0" encoding="ISO-8859-1"?>
     <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>

    Je doit écrire un programme en JDOM qui met à jour l'inventaire en tenant compte du fichier "achats.txt".La mise à jour ne concerne uniquement l'attribut "code" et "quantité" du fichier "achats.txt". La commande que je devrais utilisé avec java est:"java Inventaire achats.txt inventaire.xml"

    je sais que mon programme aura l'allure suivante:
    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
     
    import org.w3c.dom.*;
     import java.io.*;
     import javax.xml.parsers.*;
     import javax.xml.transform.*;
     import javax.xml.transform.dom.*;
     import javax.xml.transform.stream.*;
     
     public class Inventaire {
        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();
        if(args[0].equals("modifier")) {
           for (int k = 0; k < nl.getLength(); ++k) {
              if(nl.item(k).getNodeType()==Node.ELEMENT_NODE) {
                 Element e = (Element) nl.item(k);
                    if(e.getAttribute("nom").equals(args[1])) {
                       e.getParentNode().removeChild(e);
                   }
              }
           }
    Je sais également que je vais devoir utilisé la classe "BufferedReader" pour récupérer le flux de donnée du fichier "achats.txt". Néanmoins, je ne sais pas comment récupérer l'attribut "code" et "quantité" puis les soustraire à l'inventaire.
    Merci de votre intention.

  2. #2
    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
    Citation Envoyé par neomuller Voir le message
    je sais que mon programme aura l'allure suivante:
    En JDom ça m'étonnerait. Ça c'est du org.w3c.dom.*, infiniment moins pratique.

    Citation Envoyé par neomuller Voir le message
    Je sais également que je vais devoir utilisé la classe "BufferedReader" pour récupérer le flux de donnée du fichier "achats.txt". Néanmoins, je ne sais pas comment récupérer l'attribut "code" et "quantité" puis les soustraire à l'inventaire.
    Oui donc en gros tu ne sais pas comment extraire les données d'un fichier texte. C'est-à-dire d'un fichier pas XML. Donc tu as une question qui ne concerne pas XML -_-°. Je la laisse ici pour l'instant au cas où, mais en général tu auras de meilleurs résultats en posant tes questions au bon endroit.

    Tu pourrais t'en sortir facilement avec un simple split() sur chaque ligne du fichier. Mais si ça te fait peur, tu peux utiliser une bibliothèque de parsing CSV, elles sont là pour ça. Par exemple commons-csv.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Mars 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mars 2012
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Merci de votre aide.

    Tout d'abord, je pense que ma question concerne le XML puisque mon résultat doit être un programme en XML nommé "inventaire XML" écrit en DOM implémenter avec JAVA. Cette technologie est étroitement liée avec le XML.

    Merci pour la piste "split()" qui ne me fait absolument pas peur, mais je ne sais pas vraiment comment la mettre en pratique. Ça fait quelques jours que j'essaie d'avoir des exemples en recherchant avec "google" mais je trouve que Internet est un peu avars sur le XML et le Java DOM. C'est pourquoi je pensai que ce site ultra spécialisé pouvais m'aider et qui est fait pour ça.

    Le code suivant propose l'utilisation de "split()"

    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
     
    // Lecture du fichier ligne par ligne.
    while
    (( line = output.readLine()) != null
    ) {
    // La premiere ligne contient les en-tetes, on saute.
    if ( !aSautePremiereLigne ) {
          aSautePremiereLigne = true;
    // Cette ligne contient des donnees
    }
     
    else
    {
    System.out.println( line );
    /* On recupere dans un tableau de String, les chaines de caracteres separees par des virgules. */
    String[] splitted = line.split(",");
    Maintenant comment récupérer l'information "code" et "quantité" pour pouvoir l'utiliser dans mon Java DOM dont la sortie de transformation est du XML

Discussions similaires

  1. Generer un fichier xml à partir d'un fichier xsd en Python
    Par Nico+10) dans le forum Général Python
    Réponses: 3
    Dernier message: 24/03/2014, 08h58
  2. Mise-à-jour d'un fichier xml à partir d'un fichier xls
    Par ch.molines dans le forum Développement de jobs
    Réponses: 4
    Dernier message: 13/02/2013, 18h29
  3. creation d'un fichier pdf à partir d'un fichier xml
    Par med_ellouze dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 24/08/2007, 09h37
  4. Réponses: 3
    Dernier message: 04/04/2007, 14h45
  5. Générer un exemple de fichier xml à partir d'un fichier
    Par leuqui dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 01/07/2005, 09h25

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