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 :
Le problème est que seul mon dernier objet est ajouté à mon fichier XML !
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 <?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>
Voiçi mon code :
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 /** * 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
Partager