bonjour,
j'ai un souci d'ecriture de fichier dans mon programme java
j'ai une structure de donnee a parcourir et a reecrire dans un fichier (il s'agit d'XML en l'occurrence)
j'ai un souci en sortie car je n'obtiens pas le resultat voulu, voici le code:
public void ecritureFichier(){
System.out.println("sauvegarde dans un fichier" );
try {
sortie.flush();
sortie.writeObject("<?xml version=\"1.0\" ?>\n" );
sortie.writeObject("<!--fichier genere par SYNOXML V-1.0 -->\n" );
sortie.writeObject("<Services xmlns=\"http://www.hp.com/OV/opcsvc\">\n" );
//Insertion du client
sortie.writeObject("<Service couche=\"client\">\n" );
sortie.writeObject(" <Label></Label>\n" );
sortie.writeObject(" <Icon></Icon>\n" );
sortie.writeObject(" <Name>"+nomClient+"</Name>\n" );
//insertion des fils du client - aka application
sortie.writeObject(" <Source>\n" );
sortie.writeObject(" <Composition />\n" );
sortie.writeObject(" <ServiceRef>"+nomApplication+"</ServiceRef>\n" );
sortie.writeObject(" </Source>\n" );
sortie.writeObject("</Service>\n" );
//Insertion de l'application
sortie.writeObject("<Service couche=\"application\">\n" );
sortie.writeObject(" <Label></Label>\n" );
sortie.writeObject(" <Icon></Icon>\n" );
sortie.writeObject(" <Name>"+nomApplication+"</Name>\n" );
//insertion des fils de l'application - aka les sous applications
for(int i=0; i<tabSousApplication.size(); i++){
System.out.println(((SousApplication)tabSousApplication.get(i)).nomssAppli);
sortie.writeObject(" <Source>\n" );
sortie.writeObject(" <Composition />\n" );
sortie.writeObject(" <ServiceRef>"+((SousApplication)tabSousApplication.get(i)).nomssAppli+"</ServiceRef>\n" );
sortie.writeObject(" </Source>\n" );[#0e00f0/]
}
[#0e00f0]sortie.writeObject("</Service>\n" );
sortie.writeObject("</Services>\n" );
sortie.writeObject("<!-- end of file -->\n" );
}
catch ( IOException e ) {
JOptionPane.showMessageDialog( this,
"Erreur douverture de fichier", "Erreur",
JOptionPane.ERROR_MESSAGE );
}
}
et voici ce que j'ai en sortie dans mon fichier:
-<?xml version="1.0" ?>
<Services xmlns="http://www.hp.com/OV/opcsvc">
<Service couche="client">
<Label></Label>
<Icon></Icon>
<Name>la poste</Name>
<Source>
<Composition />
<ServiceRef>partages</ServiceRef>
</Source>
</Service>
<Service couche="application">
<Name>partages</Name>
<ServiceRef>partagev0</ServiceRef>
<ServiceRef>partagev1</ServiceRef>
</Services>
<!-- end of file -->
bon ici c'est bien concatene, mais chaque ligne est precedee de caracteres non voulu...je ne vois pas d'ou ca viens
ensuite, quand je veux ecrire le bloc concernant l'application, j'ai le resultat de la boucle qui affiche les fils (partagev0 et partagev1) cependant:
- les tags precedants la boucle, <Source> et <Composition /> n'apparaissent pas
- les tags succedant a la boucle </Source> et </Service> n'apparaissent pas, mais le tag suivant (donc apres la boucle) </Services>
ainsi que la derniere ligne <-- end of file --> apparaissent???
j'ai egalement utilise les methodes writeChars et writeUTF sans succes
je pense que le probleme viens de la boucle mais je ne fait rien de special et ne comprend pas le resultat
quelq'un sait - il d'ou cela proviens?
merci
Message édité par kungouf le 06-12-2004 à 16:04:05