probleme de suppresion de noeud
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:
Citation:
<?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>
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:
Code:
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());
} |
Et dans le main:
Code:
1 2 3 4 5 6
|
public static void main(String[] args)
{
removeAnswer("question1.xml",3);
saveQuestion("Newquestion1.xml");
} |
Merci pour toutes aides.