J'ai refait ma classe JDOM en suivant exactement ce tuto
j'essai juste pour le moment d'afficher dans la console.
donc voici la classe:
je n'utilise que "theFile" et "afficheALL"
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
86
87
88
89
90
91
92
93
94
95
96
97package Prog.EPlayGames.Class; import java.io.*; import java.util.ArrayList; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import org.jdom.*; import org.jdom.input.SAXBuilder; import org.jdom.output.*; public class JDOM { static Element racine; static List<Game> CollectionOfGame = new LinkedList(); public JDOM(){ } static org.jdom.Document document = new Document(racine); public void afficheAll() { //On crée une List contenant tous les noeuds "etudiant" de l'Element racine List listEtudiants = racine.getChildren("game"); //On crée un Iterator sur notre liste Iterator i = listEtudiants.iterator(); while(i.hasNext()) { //On recrée l'Element courant à chaque tour de boucle afin de //pouvoir utiliser les méthodes propres aux Element comme : //selectionner un noeud fils, modifier du texte, etc... Element courant = (Element)i.next(); //On affiche le nom de l'element courant System.out.println(courant.getChild("name").getText()); System.out.println(courant.getChild("plateform").getText()); } } public void TheFile(){ //On crée une instance de SAXBuilder SAXBuilder sxb = new SAXBuilder(); try { //On crée un nouveau document JDOM avec en argument le fichier XML //Le parsing est terminé ;) document = sxb.build(new File("Games1.xml")); } catch(Exception e){} //On initialise un nouvel élément racine avec l'élément racine du document. racine = document.getRootElement(); //Méthode définie dans la partie 3.2. de cet article afficheAll(); } public void Save(String id, String name, String plateform, String price, String description, String url){ Element game = new Element("game"); racine.addContent(game); Element a = new Element("id"); a.setText("id"); game.addContent(a); Element b = new Element("name"); b.setText("name"); game.addContent(b); Element c = new Element("plateform"); c.setText("plateform"); game.addContent(c); Element d = new Element("price"); d.setText("price"); game.addContent(d); Element e = new Element("description"); e.setText("description"); game.addContent(e); Element f = new Element("url"); f.setText("url"); game.addContent(f); try { XMLOutputter out = new XMLOutputter(Format.getPrettyFormat()); out.output(document, new FileOutputStream("games.xml")); } catch (java.io.IOException exc){} } }
Et voici le code généré par la console
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 16 nov. 2007 22:20:48 org.apache.catalina.core.StandardWrapperValve invoke GRAVE: "Servlet.service()" pour la servlet jsp a généré une exception java.lang.IllegalStateException: Root element not set at org.jdom.Document.getRootElement(Document.java:218) at Prog.EPlayGames.Class.JDOM.TheFile(JDOM.java:55) at org.apache.jsp.pages.admin.AddGame_jsp._jspService(AddGame_jsp.java:71) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Thread.java:619)
je pense que la ligne important est le
Code : Sélectionner tout - Visualiser dans une fenêtre à part java.lang.IllegalStateException: Root element not set
Partager