Jdom
gilles81
Messages postés
72
Statut
Membre
-
Marco la baraque Messages postés 1030 Statut Contributeur -
Marco la baraque Messages postés 1030 Statut Contributeur -
Bonjour,
je n'arrive pas à exécuter l'exemple du tutoriel xml de developpez.com . en fait il y a une classe JDOM1 qui cré le fichier xml:
import java.io.*;
import org.jdom.*;
import org.jdom.output.*;
public class JDOM1
{
//Nous allons commencer notre arborescence en créant la racine XML
//qui sera ici "personnes".
static Element racine = new Element("personnes");
//On crée un nouveau Document JDOM basé sur la racine que l'on vient de créer
static org.jdom.Document document = new Document(racine);
public static void main(String[] args)
{
//On crée un nouvel Element etudiant et on l'ajoute
//en temps qu'Element de racine
Element etudiant = new Element("etudiant");
racine.addContent(etudiant);
//On crée un nouvel Attribut classe et on l'ajoute à etudiant
//grâce à la méthode setAttribute
Attribute classe = new Attribute("classe","P2");
etudiant.setAttribute(classe);
//On crée un nouvel Element nom, on lui assigne du texte
//et on l'ajoute en temps qu'Element de etudiant
Element nom = new Element("nom");
nom.setText("CynO");
etudiant.addContent(nom);
Element prenoms = new Element("prenoms");
etudiant.addContent(prenoms);
Element prenom1 = new Element("prenom");
prenom1.setText("Nicolas");
prenoms.addContent(prenom1);
Element prenom2= new Element("prenom");
prenom2.setText("Laurent");
prenoms.addContent(prenom2);
Element Etudiant2 = new Element("etudiant");
Attribute classe2 = new Attribute("classe", "P1");
Etudiant2.setAttribute(classe2);
racine.addContent(Etudiant2);
Element nom2 = new Element("nom");
nom2.setText("Superwoman");
Etudiant2.addContent(nom2);
Element Etudiant3 = new Element("etudiant");
Attribute classe3 = new Attribute("classe", "P1");
Etudiant3.setAttribute(classe3);
racine.addContent(Etudiant3);
Element nom3 = new Element("nom");
nom3.setText("Don Corleone");
Etudiant3.addContent(nom3);
affiche();
enregistre("myFirst xml");
}
static void affiche()
{
try
{
//On utilise ici un affichage classique avec getPrettyFormat()
XMLOutputter sortie = new XMLOutputter(Format.getPrettyFormat());
sortie.output(document, System.out);
}
catch (java.io.IOException e){}
}
static void enregistre(String fichier)
{
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(document, new FileOutputStream(fichier));
}
catch (java.io.IOException e){}
}
}
et maintenant il faut afficher le nom de tous les elèves:
import java.io.*;
import org.jdom.*;
import org.jdom.input.*;
import org.jdom.filter.*;
import java.util.List;
import java.util.Iterator;
public class JDOM2
{
static org.jdom.Document document;
static Element racine ;
public static void main(String[] args)
{
//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("personnes.xml"));
}
catch(Exception e){System.out.println( e );}
racine = document.getRootElement();
//Méthode définie dans la partie 3.2. de cet article
afficheALL();
}
static void afficheALL()
{
//On crée une List contenant tous les noeuds "etudiant" de l'Element racine
List listEtudiants = racine.getChildren("etudiant");
//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("nom").getText());
}
}
}
quand j'exécute la seconde classe j'ai une erreur:
java.io.FileNotFoundException: C:\Users\user\workspace\Jdom1\personnes.xml (Das System kann die angegebene Datei nicht finden)
Exception in thread "main" java.lang.NullPointerException
at JDOM2.main(JDOM2.java:26)
Quelqu'un peut il m'aider svp. ça m'empêche de continuer le tutoriel
merci
je n'arrive pas à exécuter l'exemple du tutoriel xml de developpez.com . en fait il y a une classe JDOM1 qui cré le fichier xml:
import java.io.*;
import org.jdom.*;
import org.jdom.output.*;
public class JDOM1
{
//Nous allons commencer notre arborescence en créant la racine XML
//qui sera ici "personnes".
static Element racine = new Element("personnes");
//On crée un nouveau Document JDOM basé sur la racine que l'on vient de créer
static org.jdom.Document document = new Document(racine);
public static void main(String[] args)
{
//On crée un nouvel Element etudiant et on l'ajoute
//en temps qu'Element de racine
Element etudiant = new Element("etudiant");
racine.addContent(etudiant);
//On crée un nouvel Attribut classe et on l'ajoute à etudiant
//grâce à la méthode setAttribute
Attribute classe = new Attribute("classe","P2");
etudiant.setAttribute(classe);
//On crée un nouvel Element nom, on lui assigne du texte
//et on l'ajoute en temps qu'Element de etudiant
Element nom = new Element("nom");
nom.setText("CynO");
etudiant.addContent(nom);
Element prenoms = new Element("prenoms");
etudiant.addContent(prenoms);
Element prenom1 = new Element("prenom");
prenom1.setText("Nicolas");
prenoms.addContent(prenom1);
Element prenom2= new Element("prenom");
prenom2.setText("Laurent");
prenoms.addContent(prenom2);
Element Etudiant2 = new Element("etudiant");
Attribute classe2 = new Attribute("classe", "P1");
Etudiant2.setAttribute(classe2);
racine.addContent(Etudiant2);
Element nom2 = new Element("nom");
nom2.setText("Superwoman");
Etudiant2.addContent(nom2);
Element Etudiant3 = new Element("etudiant");
Attribute classe3 = new Attribute("classe", "P1");
Etudiant3.setAttribute(classe3);
racine.addContent(Etudiant3);
Element nom3 = new Element("nom");
nom3.setText("Don Corleone");
Etudiant3.addContent(nom3);
affiche();
enregistre("myFirst xml");
}
static void affiche()
{
try
{
//On utilise ici un affichage classique avec getPrettyFormat()
XMLOutputter sortie = new XMLOutputter(Format.getPrettyFormat());
sortie.output(document, System.out);
}
catch (java.io.IOException e){}
}
static void enregistre(String fichier)
{
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(document, new FileOutputStream(fichier));
}
catch (java.io.IOException e){}
}
}
et maintenant il faut afficher le nom de tous les elèves:
import java.io.*;
import org.jdom.*;
import org.jdom.input.*;
import org.jdom.filter.*;
import java.util.List;
import java.util.Iterator;
public class JDOM2
{
static org.jdom.Document document;
static Element racine ;
public static void main(String[] args)
{
//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("personnes.xml"));
}
catch(Exception e){System.out.println( e );}
racine = document.getRootElement();
//Méthode définie dans la partie 3.2. de cet article
afficheALL();
}
static void afficheALL()
{
//On crée une List contenant tous les noeuds "etudiant" de l'Element racine
List listEtudiants = racine.getChildren("etudiant");
//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("nom").getText());
}
}
}
quand j'exécute la seconde classe j'ai une erreur:
java.io.FileNotFoundException: C:\Users\user\workspace\Jdom1\personnes.xml (Das System kann die angegebene Datei nicht finden)
Exception in thread "main" java.lang.NullPointerException
at JDOM2.main(JDOM2.java:26)
Quelqu'un peut il m'aider svp. ça m'empêche de continuer le tutoriel
merci
1 réponse
Bonjour,
Cette erreur arrive car :
- tu crées, grâce à ta classe 1, un fichier que tu appelles "myFirst xml"
- tu essaies d'ouvrir un fichier "personnes.xml" grâce à ta classe 2
Comme ce fichier n'existe pas, ton fichier te lance une exception de type FileNotFoundException (qui veut littéralement dire "JeNeTrouvePasLeFichier").
Peux-être en renommant le fichier que tu crées dans ta classe1 en personnes.xml ?
Cordialement,
Cette erreur arrive car :
- tu crées, grâce à ta classe 1, un fichier que tu appelles "myFirst xml"
- tu essaies d'ouvrir un fichier "personnes.xml" grâce à ta classe 2
Comme ce fichier n'existe pas, ton fichier te lance une exception de type FileNotFoundException (qui veut littéralement dire "JeNeTrouvePasLeFichier").
Peux-être en renommant le fichier que tu crées dans ta classe1 en personnes.xml ?
Cordialement,