Recuperer le resultat d'un parsing SAX
Bonjour tout le monde,
Je suis débutante en JAVA et c'est mon premier post donc je m'excuse si ma question vous paraît naïve!
J'ai lu toute la Faq xml/java qui m'a bien aidé pour commencer à résoudre mon problème mais je bloque sur la dernière étape.
J'ai donc un fichier xml contenant une liste d'employés, que je parse grâce à SAX,et les differents employés sont récuperer dans un Vector.
J'arrive à afficher le contenu de ce Vector sur la sortie standard mais le problème c'est que je n'arrive pas à accéder à ce Vector à partir d'une autre classe.
Pourriez vous m'aider s'il vous plait???????cela debloquerait toute la suite de mon application!!!!
Voici mon fichier xml:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| <?xml version="1.0" encoding="ISO-8859-1"?>
<liste>
<employe>
<nom>nom0</nom>
<prenom>prenom0</prenom>
<statut>adresse0</statut>
</employe>
<employe>
<nom>nom1</nom>
<prenom>prenom1</prenom>
<statut>adresse1</statut>
</employe>
</liste> |
Voici ma classe Emp qui instancie des employés:
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
| public class Emp extends Pers{
String statut;
String login;
String mdp;
public Emp(){}
public void setStatut(String st){statut=st;}
public void setLogin(String lg){login=lg;}
public void setMdp (String mp)mdp=mp;}
public String getStatut(){return statut;}
public String getLogin(){return login;}
public String getMdp(){return mdp;}
public String detailPersonnel ()
{
StringBuffer personnel = new StringBuffer();
personnel.append(super.toString()).append(" Statut: ").append(statut).append(" Login: ").append(login).append(" Mot de passe: ").append(mdp);
return personnel.toString();
}
} |
Et voici ma classe Handler:
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 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
| public class EmpHandler extends DefaultHandler{
//résultats du parsing
private Vector<Emp> listeemployeactuel;
private Emp employe;
//flags nous indiquant la position du parseur
private boolean inListe, inEmploye, inNom, inPrenom, inStatut;
// simple constructeur
public EmpHandler(){
super();
}
//détection d'ouverture de balise
public void startElement(String uri, String localName,String qName,Attributes attributes)throws SAXException{
System.out.println(uri+" "+localName+" "+qName);
if(qName.equals("liste")){
listeemployeactuel = new Vector<Emp>();
inListe = true;
}
else if(qName.equals("employe")){
employe = new Emp();
inEmploye = true;
}
else if(qName.equals("nom")){
inNom = true;
}
else if(qName.equals("prenom")){
inPrenom = true;
}
else if(qName.equals("statut")){
inStatut = true;
}else
{
//erreur, on peut lever une exception
throw new SAXException("Balise "+qName+" inconnue.");
}
}
//détection fin de balise
public void endElement(String uri,String localName, String qName)throws SAXException{
if(qName.equals("liste")){
inListe = false;
}
else if(qName.equals("employe")){
listeemployeactuel.add(employe);
employe = null;
inEmploye = false;
}
else if(qName.equals("nom")){
inNom = false;
}
else if(qName.equals("prenom")){
inPrenom = false;
}
else if(qName.equals("statut")){
inStatut = false;
}
else{
//erreur, on peut lever une exception
throw new SAXException("Balise "+qName+" inconnue.");
}
}
//détection de caractères
public void characters(char[] ch,int start,int length)throws SAXException{
String lecture = new String(ch,start,length);
if(inNom){
employe.setNom(lecture);
}
else if(inPrenom){
employe.setPrenom(lecture);
}
else if(inStatut){
employe.setStatut(lecture);
}
}
//début du parsing
public void startDocument() throws SAXException {
System.out.println("Début du parsing");
}
//fin du parsing
public void endDocument() throws SAXException {
System.out.println("Fin du parsing");
System.out.println("Resultats du parsing");
for(Emp e : listeemployeactuel){
System.out.println(e.detailPersonnel());
//au lieu d'afficher sur la sortie standard les employes (ce qui fonctionne) je désire recuper la listeemployeactuel
}
}
// test
public static void main(String[] args){
try{
// création d'une fabrique de parseurs SAX
SAXParserFactory fabrique = SAXParserFactory.newInstance();
// création d'un parseur SAX
SAXParser parseur = fabrique.newSAXParser();
// lecture d'un fichier XML avec un DefaultHandler
File fichier = new File("./ExempleSax.xml");
DefaultHandler gestionnaire = new EmpHandler();
parseur.parse(fichier, gestionnaire);
//comment recuperer le vector contenant la liste des employes????
}catch(ParserConfigurationException pce){
System.out.println("Erreur de configuration du parseur");
System.out.println("Lors de l'appel à SAXParser.newSAXParser()");
}catch(SAXException se){
System.out.println("Erreur de parsing");
System.out.println("Lors de l'appel à parse()");
se.printStackTrace();
}catch(IOException ioe){
System.out.println("Erreur d'entrée/sortie");
System.out.println("Lors de l'appel à parse()");
}
}
} |
Voila j'espère que quelqu'un pourra m'aider!!!!Je vous remercie par avance!!!!
Bonne journée!