hello,
coment puis-je faire :
en code java<?xml version="1.0" encoding="iso-8859-1"?>
Merci beaucoup
hello,
coment puis-je faire :
en code java<?xml version="1.0" encoding="iso-8859-1"?>
Merci beaucoup
Voici en jdom
avec la ligne importante
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 iso.setEncoding("iso-8859-1");
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; import java.io.Writer; import org.jdom.Document; import org.jdom.Element; import org.jdom.output.Format; import org.jdom.output.XMLOutputter; public class TestXmlOutput { /** * @param args */ public static void main(String[] args) { Element root = new Element("testDoc"); Document myDocument = new Document(root); Element testDoc = new Element("testDoc"); root.addContent(testDoc); Format iso; XMLOutputter outputer = new XMLOutputter(); iso = outputer.getFormat(); iso.setEncoding("iso-8859-1"); outputer.setFormat(iso); File file = null; file = new File("d:/testDoc.xml"); try { FileOutputStream fos = new FileOutputStream(file); Writer writter = new OutputStreamWriter(fos, "iso-8859-1"); outputer.output(myDocument, writter); writter.flush(); writter.close(); } catch (IOException e) { e.printStackTrace(); } } }
Merci bq pour ta réponse,
Malheureusement j'utilise pas JDOM, je vous explique ce que je voudrais faire peut etre pourriez vous m'aider.
Le but c'est de convertir un objet en une balise XML, cet object se compose simplement de trois champs string, à la fin le résultat doit ressembler à la balise suivante :
Par contre j'ai problème qui survient quand les champs string contiennent des caractères accentués. C'est pour cela que je voulais indiquer l'encoding pour ainsi reconnaitre c'est caractères.
Code : Sélectionner tout - Visualiser dans une fenêtre à part <fund description="machin" id="fund 1" label="FUND 1"/>
Voila la méthode "simplifié" que j'utilise pour mettre à jour la balise XML
le problème survient quand je passe la valeur du parametre à la valeur du nœud, par ex :
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54 import org.apache.xerces.parsers.DOMParser; import org.w3c.dom.Attr; import org.w3c.dom.Document; ... private String updateFundToData(String id, String label, String description, String adata) { Document doc = initXmlDoc(adata); if(doc == null) { return adata; } Node tmpNodeFund = null; String idfund; for (int i = 0; i < doc.getElementsByTagName("fund").getLength(); i++) { tmpNodeFund=doc.getElementsByTagName("fund").item(i); if(tmpNodeFund.getAttributes().getNamedItem("id")!=null) { idfund=tmpNodeFund.getAttributes().getNamedItem("id").getNodeValue(); } else{ idfund=""; } if(idfund.equals(id)) { if(tmpNodeFund.getAttributes().getNamedItem("id")!=null) { tmpNodeFund.getAttributes().getNamedItem("id").setNodeValue(id); } if(tmpNodeFund.getAttributes().getNamedItem("label")!=null) { tmpNodeFund.getAttributes().getNamedItem("label").setNodeValue(label); } if(tmpNodeFund.getAttributes().getNamedItem("description")!=null) { tmpNodeFund.getAttributes().getNamedItem("description").setNodeValue(description); } else // Si la description n'existe pas dans la balise fund, on l'ajoute { Attr attributeDescription=doc.createAttribute("description"); attributeDescription.setValue(description); tmpNodeFund.getAttributes().setNamedItem(attributeDescription); } } } return adata; }
à quel niveau a ton avis je dois mettre l'encoding et surtout dans qu'elle objet dispose t on d'une méthode qui me permet de le faire. (Document ? je vois pas qu'elle méthode je dois utiliser)tmpNodeFund.getAttributes().getNamedItem("label").setNodeValue(label);
Merci beaucoup
j ai deja eu ce genre de probléme d'encoding ce que l on ma répondu à l'époque c est que
donc en théorie quand tu fait ton setNodeValue(label) label devrait être formater en utf16 => pas de probléme ....Une fois en Java on n'a pas à se soucier de l'encodage (c'est toujours de l'Utf-16). Ce n'est que lors des entrées/sorties qu'on doit gérer cela...
Comment fait tu pour voir le résultat de ton XML (ecriture en file, sysout consol, ...) ?
Hello,
Je te conseille plutot d'utiliser l'api StAX pour écrire ce genre de petite application. L'écriture du XML est bien + intuitif que lorsqu'on utilise DOM.
Petite précision, je te conseille d'avoir la librairie woodstox dans ton projet, qui est une bonne implémentation de stax.
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 ByteArrayOutputStream baos = new ByteArrayOutputStream(); XMLOutputFactory xmlOutputFactory = XMLOutputFactory.newInstance(); XMLStreamWriter out = xmlOutputFactory.createXMLStreamWriter(baos, "iso-8859-1"); out.writeStartDocument(); out.writeStartElement("fund"); out.writeAttribute("description", "machin"); out.writeAttribute("id", "fund 1"); out.writeAttribute("label", "FUND 1"); out.writeEndElement(); out.writeEndDocument(); out.close(); System.out.println(baos.toString("iso-8859-1"));
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 <?xml version='1.0' encoding='iso-8859-1'?><fund description="machin" id="fund 1" label="FUND 1" />
Merci pour vos réponses, j'avais déjà résolu le problème mais j'ai oublié de le préciser. J'ai juste empêcher le user d'entrer des caractères accentues. Je vais changer pour prendre en compte vos solutions
merci encore
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager