Plusieurs fois le même noeud dans un fichier XML
Bonjour !
Je fais mes premiers pas avec JABX, et je me demande comment ajouter dans mon xml plusieurs fois les même noeuds.
Pour être plus précis (il y a beaucoup de code mais c'est simple :)) :
J'ai un objet FilmXml qui peut être présent plusieurs fois dans mon fichier XML comme ceci :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<filmXml xmlns="http://www.ndd.com/jaxb">
<emplacementFichier></emplacementFichier>
<nomFichier>fichier1.avi</nomFichier>
<identifiant>1</identifiant>
<nom>Nom du premier Film</nom>
<annee>2000</annee>
</filmXml>
<filmXml xmlns="http://www.ndd.com/jaxb">
<emplacementFichier></emplacementFichier>
<nomFichier>fichier2.avi</nomFichier>
<identifiant>2</identifiant>
<nom>Nom du deuxième film</nom>
<annee>2010</annee>
</filmXml> |
Le problème est que seul mon dernier objet est ajouté à mon fichier XML !
Voiçi mon code :
Code:
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
|
/**
* Liste des films
* @param lstFilmFichier liste des films qui sont présent physiquement sur le disque
*/
public static void genererListeXmlScan(ArrayList<Film> lstFilmFichier) {
//Parcours des films présents physiquement sur le disque pour en faire un xml (1ere fois)
System.out.println("-- Début génération fichier.xlm --");
File fichierXml = new File(Constantes.DOSSIER_BASE+"/"+Constantes.FICHIER_FILMS_XML);
//On travail directement avec des objets structurés pour le xml :
ArrayList<FilmXml> lstFilmXml = obtenirListeFilmXml(lstFilmFichier);
try {
JAXBContext jc = JAXBContext.newInstance(FilmXml.class);
for(FilmXml filmXml : lstFilmXml) {
Marshaller marshaller = jc.createMarshaller();
marshaller.marshal(filmXml, fichierXml);
}
} catch (JAXBException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("-- Fin génération fichier.xml --");
}
//Mettre nos objets film en objet film xml utilisable avec JAXB:
private static ArrayList<FilmXml> obtenirListeFilmXml(ArrayList<Film> lstFilmFichier) {
ArrayList<FilmXml> lstFilmXml = new ArrayList<FilmXml>();
for(Film film : lstFilmFichier) {
ObjectFactory fabrique = new ObjectFactory();
FilmXml filmXml = fabrique.createFilmXml();
filmXml.setEmplacementFichier(film.getEmplacementFichier());
filmXml.setNomFichier(film.getNomFichier());
filmXml.setAnnee(0);
filmXml.setIdentifiant("");
filmXml.setNom("");
lstFilmXml.add(filmXml);
}
return lstFilmXml;
} |
D'ou ma question : comment ajouter plusieurs fois le même noeud dans mon fichier XML ? / Pourquoi uniquement le dernier objet est ajouté dans mon fichier XML ?
Merci