j'ai la simple classe suivante avec jdom:
classe de test, c'est pour ça le code né pas propre
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
 
package com.yourcompany.JDOMXmlManager;
 
import java.util.*;
import java.util.Collection;
import java.io.*;
import java.io.*;
import org.jdom.*;
import org.jdom.output.*; 
 
 
public class JDOMTest {
     //simple class de test
    //later cette classe aura une méthode qui appel lobjet bean de la page jsp et extrait le fichier
	//XML! check conception later, better way
 
	private Collection objectToBeExtracted;
	///////les element statiques pour définir les noms des balises...
       //Nous allons commencer notre arborescence en créant la racine XML
	   //qui sera ici "personnes".
	   static Element racine = new Element("personnes");
 
	   //On crée un nouveau Document JDOM basé sur la racine que l'on vient de créer
	   static org.jdom.Document document = new Document(racine);
 
	public JDOMTest() {
		super();
		// TODO Auto-generated constructor stub
	}
 
	public void testFunction()
	{
		  //On crée un nouvelle Element etudiant et on l'ajoute 
	      //en temps qu'Element de racine
	      Element etudiant = new Element("etudiant");
	      racine.addContent(etudiant);
 
	      //On crée un nouvelle Attribut classe et on l'ajoute à etudiant
	     //grâce à la méthode setAttribute
	      Attribute classe = new Attribute("classe","P2");
	      etudiant.setAttribute(classe);
 
	      //On crée un nouvelle Element nom, on lui assigne du text 
	      //et on l'ajoute en temps qu'Element de etudiant
	      Element nom = new Element("nom");
	      nom.setText("CynO");
	      etudiant.addContent(nom);
 
	      //Les deux appels qui suivent seront définis dans la partie 2.3.
	      //affiche();
	      enregistre("Exercice 1.xml");	
		;
	}
	//les deux méthodes affiche et enregistre
	////////////////////////////////////////////////////////////////////////////////////////////
 
//	Ajouter ces deux méthodes à notre class JDOM
//once test Ok, cette partie à améliorer le maximum
//selon les besoins du stockage ..
	static void affiche()
	{ 
	   try
	   {
	      //On utilise ici un affichage classic avec getPrettyFormat()
	      XMLOutputter sortie = new XMLOutputter(Format.getPrettyFormat());
	      sortie.output(document, System.out);
	   }
	   catch (java.io.IOException e){}
	}
 
	static void enregistre(String fichier)
	{ 
	   try
	   {
	      //On utilise ici un affichage classic avec getPrettyFormat()
	      XMLOutputter sortie = new XMLOutputter(Format.getPrettyFormat());
	      //Remarquez qu'il suffit simplement de créer une instance de FileOutputStream
	      //avec en argument le nom du fichier pour effectuer la sérialisation.
	      sortie.output(document, new FileOutputStream(fichier));
	   }
	   catch (java.io.IOException e){}
	} 
	////////////////////////////////////////////////////////////////////////////////////////////
 
}
et jai les erreurs de compilation suivante:
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
RAVE: Parse Error at line 6 column 19: Document root element "taglib", must match DOCTYPE root "null".
org.xml.sax.SAXParseException: Document root element "taglib", must match DOCTYPE root "null".
	at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
	at org.apache.xerces.util.ErrorHandlerWrapper.error(Unknown Source)
	at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
	at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
	at org.apache.xerces.impl.dtd.XMLDTDValidator.rootElementSpecified(Unknown Source)
	at org.apache.xerces.impl.dtd.XMLDTDValidator.handleStartElement(Unknown Source)
	at org.apache.xerces.impl.dtd.XMLDTDValidator.startElement(Unknown Source)
	at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanStartElement(Unknown Source)
	at org.apache.xerces.impl.XMLDocumentScannerImpl$ContentDispatcher.scanRootElementHook(Unknown Source)
	at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
	at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
	at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
	at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
	at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
	at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
	at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
	at org.apache.commons.digester.Digester.parse(Digester.java:1765)
	at org.apache.catalina.startup.ContextConfig.tldScanStream(ContextConfig.java:929)
	at org.apache.catalina.startup.ContextConfig.tldScanJar(ContextConfig.java:863)
	at org.apache.catalina.startup.ContextConfig.tldScan(ContextConfig.java:810)
	at org.apache.catalina.startup.ContextConfig.start(ContextConfig.java:588)
	at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:182)
	at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:120)
	at org.apache.catalina.core.StandardContext.start(StandardContext.java:3644)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1148)
	at org.apache.catalina.core.StandardHost.start(StandardHost.java:697)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1148)
	at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:311)
	at org.apache.catalina.core.StandardService.start(StandardService.java:450)
	at org.apache.catalina.core.StandardServer.start(StandardServer.java:2213)
	at org.apache.catalina.startup.Catalina.start(Catalina.java:459)
	at org.apache.catalina.startup.Catalina.execute(Catalina.java:346)
	at org.apache.catalina.startup.Catalina.process(Catalina.java:130)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:324)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:151)
27 sept. 2007 14:58:07 org.apache.commons.digester.Digester error
GRAVE: Parse Error at line 6 column 19: Document is invalid: no grammar found.
org.xml.sax.SAXParseException: Document is invalid: no grammar found.
	at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
	at org.apache.xerces.util.ErrorHandlerWrapper.error(Unknown Source)
	at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
	at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
	at org.apache.xerces.impl.dtd.XMLDTDValidator.handleStartElement(Unknown Source)
	at org.apache.xerces.impl.dtd.XMLDTDValidator.startElement(Unknown Source)
	at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanStartElement(Unknown Source)
	at org.apache.xerces.impl.XMLDocumentScannerImpl$ContentDispatcher.scanRootElementHook(Unknown Source)
	at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
	at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
	at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
	at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
	at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
	at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
	at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
	at org.apache.commons.digester.Digester.parse(Digester.java:1765)
	at org.apache.catalina.startup.ContextConfig.tldScanStream(ContextConfig.java:929)
	at org.apache.catalina.startup.ContextConfig.tldScanJar(ContextConfig.java:863)
	at org.apache.catalina.startup.ContextConfig.tldScan(ContextConfig.java:810)
	at org.apache.catalina.startup.ContextConfig.start(ContextConfig.java:588)
	at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:182)
	at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:120)
	at org.apache.catalina.core.StandardContext.start(StandardContext.java:3644)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1148)
	at org.apache.catalina.core.StandardHost.start(StandardHost.java:697)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1148)
	at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:311)
	at org.apache.catalina.core.StandardService.start(StandardService.java:450)
	at org.apache.catalina.core.StandardServer.start(StandardServer.java:2213)
	at org.apache.catalina.startup.Catalina.start(Catalina.java:459)
	at org.apache.catalina.startup.Catalina.execute(Catalina.java:346)
	at org.apache.catalina.startup.Catalina.process(Catalina.java:130)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:324)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:151)