Salut,
Je travaille avec JDOM sur des fichier XMl representant des questions auxquelles, je pourrais ajouter ou supprimer des options de reponses. Voici un exemple du fichier XML:
Je n'arrive pas a supprimer une option de reponse (l'element answer) specifique avec mon code. Ca supprime toujours la premiere option de reponse. Voici quelques fonction de mon code:<?xml version="1.0" encoding="UTF-8"?>
<Question>
<text>Ceci est un exemple de question</text>
<weigth>1</weigth>
<type>2</type>
<answerOption>
<answer id="1" text="option1" rigth="1" />
<answer id="2" text="option2" rigth="1" />
<answer id="3" text="option3" rigth="0" />
</answerOption>
</Question>
Et dans le main:
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 private static void readQuestion(String questionFileName) { //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é questionDocument = sxb.build(new File(questionFileName)); } catch(Exception sax){} questionRoot = questionDocument.getRootElement(); } private static void saveQuestion(String fileName) { try { //On utilise ici un affichage classique 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(questionDocument, new FileOutputStream(fileName)); } catch (java.io.IOException e){} } public static void removeAnswer(String questionFileName,int idAnswer) { String strIdAns=new Integer(idAnswer).toString(); boolean find=false; Element currentAnswer=null; readQuestion(questionFileName); System.out.println("strIdAns = " + strIdAns); Element answerOption=questionRoot.getChild("answerOption"); List listAnswer = answerOption.getChildren("answer"); //On crée un Iterator sur notre liste Iterator answerIterator = listAnswer.iterator(); while(answerIterator.hasNext() && find==false) { currentAnswer = (Element)answerIterator.next(); String currentAnswerId=currentAnswer.getAttribute("id").getValue().trim(); if(currentAnswerId.equals(strIdAns)) { System.out.println("id = " + currentAnswerId); find=true; } } if(find==true) answerOption.removeChild(currentAnswer.getName()); }
Merci pour toutes aides.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 public static void main(String[] args) { removeAnswer("question1.xml",3); saveQuestion("Newquestion1.xml"); }
Partager