Lire transformer et enregistrer un fichier xml avec java
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)
Code:
1 2 3 4
|
Jean Charles, 3214324565, 321, 2
Yvan Richard, 5435435545, 321, 1
Yvette Gagnon, 4324324243, 1, 12 |
Ensuite un code xml: (inventaire.xml)
Code:
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> |
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:
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> |
Apparemment il est possible d'écrire un tel programme en moins de 50 lignes.
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 :
Code:
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"); |
jusque là je pense que l'on est d'accord, le problème c'est après.
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?
Code:
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();
}
} |
Merci d'avance pour vos réponses.