Jdom

Résolu
johnjjj Messages postés 120 Date d'inscription dimanche 4 avril 2010 Statut Membre Dernière intervention 24 septembre 2012 - 12 mai 2010 à 01:10
johnjjj Messages postés 120 Date d'inscription dimanche 4 avril 2010 Statut Membre Dernière intervention 24 septembre 2012 - 14 mai 2010 à 17:32
Bonjour
Es que vous pouvez m’aider
Je travail avec jdom et je veux supprimer prenom lorsque il prenom= john

merci





john


Fr






sos


France












public static void main(String[] args)
{
try
{
lireFichier("p.xml");
supprElement("prenom");
enregistreFichier("p.xml");
}
catch(Exception e){System.out.print(e.toString());}
}

//On parse le fichier et on initialise la racine de
//notre arborescence
static void lireFichier(String fichier) throws Exception
{
SAXBuilder sxb = new SAXBuilder();
document = sxb.build(new File(fichier));
racine = document.getRootElement();
}

//L'on fait des modifications sur un Element
static void supprElement(String element)
{
//Dans un premier temps on list tous les étudiants
List listEtudiant = racine.getChildren("Personne");
Iterator i = listEtudiant.iterator();
//On parcours la liste grâce à un iterator
while(i.hasNext())
{
Element courant = (Element)i.next();
//Si l'etudiant possède l'Element en question on applique
//les modifications.

if(courant.getChild(element).getAttribute("john")!=null)

// if(courant.getAttribute(element)!=null)
{
//On supprime l'Element en question
// if(courant.getChild(element)!=null)

courant.removeChild(element);


}
}
}

//On enregsitre notre nouvelle arborescence dans le fichier
//d'origine dans un format classique.
static void enregistreFichier(String fichier) throws Exception
{
XMLOutputter sortie = new XMLOutputter(Format.getPrettyFormat());
sortie.output(document, new FileOutputStream(fichier));
}




}

9 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
12 mai 2010 à 08:09
Salut,

C'est que john n'est pas un attribute de ton noeaud, c'est le texte contenu dans le noeud :

//L'on fait des modifications sur un Element 
void supprElement(String element) // pourquoi tu fais toutes tes fonction en static ??? Surtout pas : tu as besoin de variable membre dans ta classe, donc oublie le static
{ 
//Dans un premier temps on list tous les étudiants 
List listEtudiant = racine.getChildren("Personne"); 
Iterator i = listEtudiant.iterator(); 
//On parcours la liste grâce à un iterator 
while(i.hasNext()) 
{ 
Element courant = (Element)i.next(); 
//Si l'etudiant possède l'Element en question on applique 
//les modifications. 

if("john".equalsIgnoreCase(courant.getChild(element).getText())) 
{ 
courant.removeChild(element); 
} 
} 
} 

______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
3
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
14 mai 2010 à 16:36
Salut,

Il ne faut pas l'appeler sur le courant, mais sur son parent : si tu l'appelle sur l'élément courant, il ne fait que supprimer son contenu (logique), donc :
if (a.equals("goupil"))
{
listEtudiant.remove(courant) ;
}
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
3
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
14 mai 2010 à 16:49
Salut,

Il faut que ta liste soit synchronized.
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
3
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
14 mai 2010 à 17:21
Salut,

Essaye ainsi :
synchronized List listEtudiant = Collections.synchronizedList(racine.getChildren("personne"));
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
johnjjj Messages postés 120 Date d'inscription dimanche 4 avril 2010 Statut Membre Dernière intervention 24 septembre 2012
12 mai 2010 à 11:46
Bonjour


merci de votre reponse
mais il reste le probleme java.lang.NullPointerException

mais existe balise john



merci
0
johnjjj Messages postés 120 Date d'inscription dimanche 4 avril 2010 Statut Membre Dernière intervention 24 septembre 2012
14 mai 2010 à 16:07
Bonjour
esque vous pouvez m'aider
Je travail avec Jdom je veux supprimer une balise personne lorsque nom= "goupil"
J’ai utiliser removeContent() mais il laisse
Je veux supprimer toutes la balise

goupil
matthiefu







Le ficher XML




goupil
matthiefu






goupil1
matthiefu








List listEtudiant = racine.getChildren("personne");
Iterator i = listEtudiant.iterator();
// On parcours la liste grâce à un iterator
while(i.hasNext())
{
Element courant = (Element)i.next();
// Si l'etudiant possède l'Element en question on applique
// les modifications.
String a=courant.getChildText("nom");

if (a.equals("goupil"))
{

courant.removeContent() ;

}

reultat





goupil1
matthiefu









mais je veux comme ca





goupil1
matthiefu









merci
0
johnjjj Messages postés 120 Date d'inscription dimanche 4 avril 2010 Statut Membre Dernière intervention 24 septembre 2012
14 mai 2010 à 16:45
merci de votre aide
mais ca marche pas il donne

java.util.ConcurrentModificationException
0
johnjjj Messages postés 120 Date d'inscription dimanche 4 avril 2010 Statut Membre Dernière intervention 24 septembre 2012
14 mai 2010 à 17:10
bonjour
je suis très désoler de dérangement
mais j'ai pas bien compris

esque comme ca

List listEtudiant = Collections.synchronizedList(racine.getChildren("personne"));



meme comme ca ca marche pas


merci
0
johnjjj Messages postés 120 Date d'inscription dimanche 4 avril 2010 Statut Membre Dernière intervention 24 septembre 2012
14 mai 2010 à 17:32
meme chose erreure
0
Rejoignez-nous