mimomama
Messages postés38Date d'inscriptionjeudi 27 décembre 2007StatutMembreDernière intervention16 avril 2009
-
3 avril 2008 à 10:13
mohamedbl
Messages postés1Date d'inscriptionvendredi 29 avril 2011StatutMembreDernière intervention22 février 2012
-
22 févr. 2012 à 16:34
Salut tout le monde.
J'ai besoin d'aide s'il vous plaît mon travail est arrêté.
Voilà mon fichier xml:
<qcm>
<questions>
</question num=1>
</libellé>
</reponse rnum 1>
</reponse rnum=2>
</question num=2>
</libellé>
</reponse rnum=1>
</reponse rnum=2>
</questions>
</qcm>
Cette structure vide se créé dés le début de l'application car l'application demande de l'utilisateur de donner le nombre de questions ainsi que les réponses.
Mais lorsque l'utilisateur saisie les questions je veux modifier ce fichier XML.
J'ai trouvé une solution dans ce forum mais lorsque je l'a mis toujours il y a ecrasement des question çad toujours les balises de la premiére questions se mettre à jours mais moi je veux passer aux balises de la deuxime questions.
Autre petit probléme dans la même question je veux passer d'une réponse à une autre mais toujouirs il y a remplacement de la premiére balise.
Ombitious_Developper
Messages postés2333Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention26 juillet 201339 3 avril 2008 à 11:01
Salut:
Tu n'es pas obligé de créer un fichier XML initial avec une structure vide.
Pourquoi compliquer les choses, tant qu'on peut faire mieux.
Tu n'as qu'à préserver les données (nombre de questions et de réponses) saisies au démarrage de l'application, puis petit à petit tu construit ton arbre XML (appendChild(), ...) au fûr et à mesure de la collecte des données (questions & réponses).
mimomama
Messages postés38Date d'inscriptionjeudi 27 décembre 2007StatutMembreDernière intervention16 avril 2009 4 avril 2008 à 00:08
Ok j'ai essayé mais le probléme reste dans la récupération des réponses toujours écrasement de la réponse précédante ,voici mon code de modification si vous voulez m'aidez. Excusez moi je me suis débutant. Merci beaucoup.
public class modif {
private String fichierXml="C:/Program Files/glassfish-v2-b58g/domains/domain1/config/qcm.xml";
//private Element racine ;
static Element racine = new Element("questions");
private Document document;
nom p=new nom();
public boolean Ajout(nom p){
try{
lireFichier(fichierXml);
if(!questionExist()){
ajouter(p);
}else{
modifier(p);
}
enregistreFichier(fichierXml);
return true;
}catch(Exception e){}
return false;
}
public void lireFichier(String fichier) throws Exception
{
SAXBuilder sxb = new SAXBuilder();
document= sxb.build(new File(fichier));
racine = document.getRootElement();
}
public void enregistreFichier(String fichier) throws Exception
{
XMLOutputter sortie = new XMLOutputter(Format.getPrettyFormat());
sortie.output(document, new FileOutputStream(fichier));
}
public void ajouter(nom p){
Element question = new Element("question");
racine.addContent(question);
Attribute num = new Attribute("num"," ");
question.setAttribute(num);
Element libelle = new Element("libelle");
question.addContent(libelle);
libelle.setText(p.getlibelle());
Element reponse = new Element("reponse");
question.addContent(reponse);
reponse.setText(p.getreponse());
Attribute rep = new Attribute("rep","");
reponse.setAttribute(rep);
Attribute rnum = new Attribute("rnum"," ");
reponse.setAttribute(rnum);
}
public boolean questionExist(){
List listquestions = racine.getChildren("question");
if(listquestions.isEmpty())
return false;
//On crée un Iterator sur notre liste
Iterator i = listquestions.iterator();
while(i.hasNext())
{
Element courant = (Element)i.next();
//On affiche le nom de l'element courant
//Je n'ai pas un moyen de comparaison car j'ai pas de balise
//numero de quesrtion mais j'ai un attribut qui indique le numero de la question
if(courant.getAttribute("num").getTextTrim().equals(num));
return true;
}
return false;
}
//////////////////////////////: cette methode permet de faire la mise à jour du question dans le cas ou il existe deja/////////////////////
public void modifier(nom p){
List listquestions = racine.getChildren("question");
//On crée un Iterator sur notre liste
Iterator i = listquestions.iterator();
while(i.hasNext())
{
Element courant = (Element)i.next();
courant.getChild("libelle").setText(p.getlibelle());
courant.getChild("reponse").setText(p.getreponse());
return;
}
}
}
La classe java nom contient les getters et les setters.
Merci.<!-- / message -->