Bonjour à tous,
j'ai vu que le sujet avait été traité deux fois sur le forum il y a un certain temps, mais aucune fois il n'y a eu d’explications sur la solution que la personne avait soi disant trouvé.
Du coup je vais reproposer le problème car j'aimerais savoir comment résoudre ce cas de figure.
Alors nous avons un fichier texte avec: (achats.txt)
Ensuite un code xml: (inventaire.xml)
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
Mon code source devra se trouver dans le fichier « Inventaire.java » et la commande « java Inventaire achats.txt inventaire.xml» va modifier le fichier « inventaire » pour y soustraire les produits achetés ce qui, dans le cas qui nous concerne, donnera un fichier « inventaire.xml » ayant le contenu suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <?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>
Apparemment il est possible d'écrire un tel programme en moins de 50 lignes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <?xml version="1.0" encoding="ISO-8859-1"?> <inventaire> <produit code="1" prix="432.00" quantité= "31" /> <produit code="32" prix="32.00" quantité= "100" /> <produit code="321" prix="31.00" quantité= "197" /> </inventaire>
Voici quelque petites règles supplémentaire:
Nous pouvons supposer que le fichier « inventaire.xml » ne contient qu'un seul élément « produit » pour chaque valeur d'attribut « code ». Nous pouvons aussi supposer qu'aucun code invalide n'apparaît dans le fichier « achats.txt ». Par contre, nous ne savons pas combien de produits nous avons et combien d'achats il y aura. Évidemment, il est possible d'avoir un nombre négatif de produits dans notre inventaire.
Alors je vais commencer étape par étape donc le début sera :
jusque là je pense que l'on est d'accord, le problème c'est après.
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 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");
Par logique je pense qu'il faut d'abord extraire les données du document txt pour ensuite modifier le document xml.
Donc pour charger les infos du doc txt je pourrais faire comme ceci?
Merci d'avance pour vos réponses.
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 public static String loadFileString(File achats.txt) throws IOException { Reader reader = new InputStreamReader(new FileInputStream(achats.txt), "ascii"); try { StringBuilder builder = new StringBuilder(); char[] buffer = new char[512]; int nbRead = reader.read(buffer); while(nbRead > 0) { builder.append(buffer, 0, nbRead); nbRead = reader.read(buffer); } return builder.toString(); } finally { reader.close(); } }
Partager