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 : 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>
Le problème est que seul mon dernier objet est ajouté à mon fichier XML !

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