Modif fichier xml lors parcours DOM

smaugg Messages postés 12 Date d'inscription mercredi 3 décembre 2003 Statut Membre Dernière intervention 28 mai 2004 - 1 avril 2004 à 09:16
smaugg Messages postés 12 Date d'inscription mercredi 3 décembre 2003 Statut Membre Dernière intervention 28 mai 2004 - 6 avril 2004 à 10:36
Bonjour les gens!!!

Voila mon problème:

Je doi utiliser le DOM pour exploiter et créer un fichier XML. Juske la tou va bien.
Par contre, lorsque je modifie mon fichier XML (une suppression de noeud par exemple), la ligne n'est pas comblée, elle reste vide. Au début de l'utilisation de mon fichier ca ne sera pas génant par contre, au fil des utilisation, cela risque de devenir très lourd... :sad)

Donc existe t il un moyen de supprimer ces lignes en meme remps ke lon modifie le fichier XML???

Merci de votre réponse. :big)

13 réponses

sleep Messages postés 68 Date d'inscription mardi 2 mars 2004 Statut Membre Dernière intervention 10 mai 2007
1 avril 2004 à 09:45
J'aimerais pouvoir t'aider, mais j'avoue ne pas comprendre ton probleme... Quand tu dis que tu modifies ton fichier xml, tu modifies quoi exactement ? Ton document Dom ? Ton fichier xml ?
0
smaugg Messages postés 12 Date d'inscription mercredi 3 décembre 2003 Statut Membre Dernière intervention 28 mai 2004
1 avril 2004 à 10:49
c vrai ke g po été super kler... ;)

donc g un fichier XML
je le charge dans un DOM
je modifie le DOM
je le reenregistre sou format XML

ma modifiaction intervient donc sur le DOM. Je rajoute ou je supprime des noeuds. Et kan jen supprime, lorsque je reenregistre sou format XML, et ben g une ligne vide la ou il y avait ce noeud...

Voila.

J'espere avoir été plus kler..
0
sleep Messages postés 68 Date d'inscription mardi 2 mars 2004 Statut Membre Dernière intervention 10 mai 2007
1 avril 2004 à 11:44
Ouaip, c'est plus clair, mais je vais encore avoir besoin d'infos...

Quand tu dis que tu enregistres sous format xml, tu fais ca comment ? Si tu utilises un writer, essaies plutot un XMLWriter, ca resouds les problemes d'indentations et peut-etre aussi ton probleme a toi ? je sais pas trop sinon, j'ai jamais eu de problemes comme ca...
0
smaugg Messages postés 12 Date d'inscription mercredi 3 décembre 2003 Statut Membre Dernière intervention 28 mai 2004
5 avril 2004 à 10:46
j'utilise les méthodes du DOM (je t'avouerai ke c un truc ke g recuperé je sai plu ou... ;) )
et ca ressemble a ca


StreamResult result = new StreamResult(f); 
 DOMSource source = new DOMSource(document);
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.METHOD, "xml");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "no");
transformer.setOutputProperty(OutputKeys.ENCODING, "ISO-8859-1");
transformer.transform(source,result);


maintenant quant a l'utilisation de XMLWriter, et ben...
g regardé et g une flemme enorme.... :big)

En fait, si je pe po le faire direct avec ce ke g (càd le DOM) et ben j'essaierai otre chose.

Voila voila...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sleep Messages postés 68 Date d'inscription mardi 2 mars 2004 Statut Membre Dernière intervention 10 mai 2007
5 avril 2004 à 11:21
Passer par un writer et pas tellement plus compliqué tu sais
Essaie un truc comme ca:

OutputFormat outFormat = new OutputFormat();
outFormat.setEncoding("ISO-8859-1");
XMLWriter writer = new XMLWriter(fwout, outFormat);
writer.write(mydocument);
writer.flush();
writer.close();

ou out est un filewriter sur ton fichier de sortie et mydocument n'est ni plus ni moins qur ton document DOM, donc tu vois, tu restes dans le DOM...!
0
smaugg Messages postés 12 Date d'inscription mercredi 3 décembre 2003 Statut Membre Dernière intervention 28 mai 2004
5 avril 2004 à 15:45
Re...

Ton code me fai bien plaisir...

mais il y un un pb lorskil compile... :sad)

symbol  : constructor XMLWriter (java.io.FileWriter,org.apache.xml.serialize.OutputFormat)
location: class org.dom4j.io.XMLWriter
XMLWriter writer = new XMLWriter(fwout, outFormat);


je me doute bien kil y a un pb de type (il attend en parametre un writer et je lui fourni un FileWriter). Mais je voi po comment faire.

PS: je declare mon FileWriter comme ca

FileWriter fwout=new FileWriter(f);

où f est un File 'pointant' sur mon fichier destination

voila...

En tou cas merci bcp du mal ke tu te donne pour moi.. :kisses)
0
sleep Messages postés 68 Date d'inscription mardi 2 mars 2004 Statut Membre Dernière intervention 10 mai 2007
5 avril 2004 à 16:12
Mouais, en théorie ca aurait du marcher....
Autre tentative, en passant par les OutputStream:

Declare un
FileOutputStream fosout = new FileOutputStream (f);

et tentes un:
XMLWriter writer = new XMLWriter(fosout, outFormat);

mais bon, sans grande conviction...

Puis t'as d'autres méthode pour produire du xml a partir d'un document, comme .asXML(), mais la c'est pas formaté du tout....

Bon, dis tjs si tu arrives a faire qqchose
0
smaugg Messages postés 12 Date d'inscription mercredi 3 décembre 2003 Statut Membre Dernière intervention 28 mai 2004
6 avril 2004 à 09:08
Euuuhhh

je vien de m'apercevoir ken definitif g vraiment po été clair...

mon fichier XML s'affiche bien indenté sans ligne vide...

ce ke je ve modifié en fait c le source du fichier XML. C'est lui ki a des lignes vides.
l'affichage par internet explorer me donne un truc super propre... Maid dès ke je ve le modifier manuellement, lorsque j'arrive dans le code, il y a des trous partout... un vrai gruyere.. :/

Donc voila...

J'espere avoir bien resitué mon pb...:)
0
sleep Messages postés 68 Date d'inscription mardi 2 mars 2004 Statut Membre Dernière intervention 10 mai 2007
6 avril 2004 à 09:38
Non non, j'avais parfaitement compris, tout est clair..

Il ne faut pas se fier a ce que l'on voit dans ie, car il va lui meme l'afficher sous forme d'arbre automatiquement (il peux meme supprimer certaines balises si elles sont inutiles) et ce que tu verra affiché ne sera en aucun cas le contenu reel de ton fichier xml, il suffit de l'ouvrir en mode texte pour s'en rendre compte..

Je n'ai malheureusement pas d'autres solutions a te proposer que celles precedemment citées, je pense quand meme qu'en passant par un xmlwriter; ces trous disgracieux devraient disparaitre.
0
sleep Messages postés 68 Date d'inscription mardi 2 mars 2004 Statut Membre Dernière intervention 10 mai 2007
6 avril 2004 à 09:38
Non non, j'avais parfaitement compris, tout est clair..

Il ne faut pas se fier a ce que l'on voit dans ie, car il va lui meme l'afficher sous forme d'arbre automatiquement (il peux meme supprimer certaines balises si elles sont inutiles) et ce que tu verra affiché ne sera en aucun cas le contenu reel de ton fichier xml, il suffit de l'ouvrir en mode texte pour s'en rendre compte..

Je n'ai malheureusement pas d'autres solutions a te proposer que celles precedemment citées, je pense quand meme qu'en passant par un xmlwriter; ces trous disgracieux devraient disparaitre.
0
sleep Messages postés 68 Date d'inscription mardi 2 mars 2004 Statut Membre Dernière intervention 10 mai 2007
6 avril 2004 à 09:39
Non non, j'avais parfaitement compris, tout est clair..

Il ne faut pas se fier a ce que l'on voit dans ie, car il va lui meme l'afficher sous forme d'arbre automatiquement (il peux meme supprimer certaines balises si elles sont inutiles) et ce que tu verra affiché ne sera en aucun cas le contenu reel de ton fichier xml, il suffit de l'ouvrir en mode texte pour s'en rendre compte..

Je n'ai malheureusement pas d'autres solutions a te proposer que celles precedemment citées, je pense quand meme qu'en passant par un xmlwriter; ces trous disgracieux devraient disparaitre.
0
sleep Messages postés 68 Date d'inscription mardi 2 mars 2004 Statut Membre Dernière intervention 10 mai 2007
6 avril 2004 à 09:40
Oula, desolé, j'ai pas craqué t'inquietes, la faute a ie encore une fois...
0
smaugg Messages postés 12 Date d'inscription mercredi 3 décembre 2003 Statut Membre Dernière intervention 28 mai 2004
6 avril 2004 à 10:36
lol ok. ..

en tou cas je te remercie bien bocou
Je vais essayé de continuer dans ce sens...
:)
0
Rejoignez-nous