Java enregistrer un fichier txt
gege.2007
Messages postés
25
Statut
Membre
-
KX Messages postés 19031 Statut Modérateur -
KX Messages postés 19031 Statut Modérateur -
Bonjour,
J'aimerais avoir un exemple de code Java qui permet de charger un fichier txt comme celui-ci
Pour mettre à jour la quantité de ce fichier xml :
et obtenir:
Je vous remercie d'avance
Gege
J'aimerais avoir un exemple de code Java qui permet de charger un fichier txt comme celui-ci
a, 155, 3, 3
b, 2236, 5, 6
Pour mettre à jour la quantité de ce fichier xml :
<?xml version="1.0" encoding="ISO-8859-1"?>
<personne>
<lettre code="3" prix="5.00" quantité= "2" />
<lettre code="5" prix="10.00" quantité= "4" />
</personne>
et obtenir:
<?xml version="1.0" encoding="ISO-8859-1"?>
<personne>
<lettre code="3" prix="5.00" quantité= "3" />
<lettre code="5" prix="10.00" quantité= "6" />
</personne>
Je vous remercie d'avance
Gege
A voir également:
- Java enregistrer un fichier txt
- Fichier bin - Guide
- Jeux java itel - Télécharger - Jeux vidéo
- Waptrick java football - Télécharger - Jeux vidéo
- Comment réduire la taille d'un fichier - Guide
- Fichier epub - Guide
2 réponses
Bonjour,
Pour comprendre ton exemple
À quoi servent b et 2236 ?
Pour comprendre ton exemple
b, 2236, 5, 6il faudrait récupérer l'élément
<lettre code="5"/>pour lui affecter la valeur
quantité= "6"?
À quoi servent b et 2236 ?
Salut, petit soucis c'est que le code en question ne modifie pas le fichier xml à partir des infos du fichier txt, j'ai essayé et ça ne fait que lire le fichier xml.
Des exemples tu en as dans la documentation :
https://docs.oracle.com/javase/tutorial/jaxp/xslt/writingDom.html
J'ai repris le code précédent pour remplacer l'affichage par des setNodeValue et j'ai ajouté à la fin l'enregistrement du fichier.
Le XML résultat est :
Il te reste bien sûr encore un peu de travail à faire pour remplacer les if que j'ai mis en dur dans le code par les modifications que tu as mis ligne par ligne dans ton fichier txt.
https://docs.oracle.com/javase/tutorial/jaxp/xslt/writingDom.html
J'ai repris le code précédent pour remplacer l'affichage par des setNodeValue et j'ai ajouté à la fin l'enregistrement du fichier.
import java.io.File;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.*;
public class XML {
public static void main(String[] args) throws Exception {
Document doc = DocumentBuilderFactory.newInstance()
.newDocumentBuilder().parse("c:/personne.xml");
doc.getDocumentElement().normalize();
NodeList lettres = doc.getElementsByTagName("lettre");
for (int i = 0; i < lettres.getLength(); i++) {
Element lettre = (Element) lettres.item(i);
NamedNodeMap attributes = lettre.getAttributes();
Node code = attributes.getNamedItem("code");
Node quantite = attributes.getNamedItem("quantite");
if (code.getNodeValue().equals("3"))
quantite.setNodeValue("3");
if (code.getNodeValue().equals("5"))
quantite.setNodeValue("6");
}
TransformerFactory.newInstance().newTransformer().transform(
new DOMSource(doc), new StreamResult(new File("C:/personne2.xml")));
}
}
Le XML résultat est :
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?><personne> <lettre code="3" prix="5.00" quantite="3"/> <lettre code="5" prix="10.00" quantite="6"/> </personne>
Il te reste bien sûr encore un peu de travail à faire pour remplacer les if que j'ai mis en dur dans le code par les modifications que tu as mis ligne par ligne dans ton fichier txt.
Pour la lettre et 2236 ou 155 on peut le voir comme le nom d'une personne et son ID, par contre cela n'est pas pris en compte dans le fichier xml puisque l'on s’intéresse seulement au code de la lettre ici 3 ou 5, au prix qui est toujours le même 5.00 ou 10.00 et à la quantité qui est ce que l'on doit mettre à jour.
Mais attention, pour Java, il est nécessaire que le XML soit bien formé, et pour cela il faudra enlever l'accent à sinon tu auras une erreur.
import javax.xml.parsers.*; import org.w3c.dom.*; public class XML { public static void main(String[] args) throws Exception { Document doc = DocumentBuilderFactory.newInstance() .newDocumentBuilder().parse("c:/personne.xml"); doc.getDocumentElement().normalize(); NodeList lettres = doc.getElementsByTagName("lettre"); for (int i = 0; i < lettres.getLength(); i++) { Element lettre = (Element) lettres.item(i); NamedNodeMap attributes = lettre.getAttributes(); for (int j = 0; j < attributes.getLength(); j++) { Node attr = attributes.item(j); System.out.println(attr.getNodeName() + ": " + attr.getNodeValue()); } System.out.println(); } } }Bonne soirée.