Récupération de la valeur d'un élément XML avec SAX

Récupération de la valeur d'un élément XML avec SAX - Java - Programmation

Marsh Posté le 14-03-2007 à 17:59:46    

Salut a tous !  
 
Je me lance dans l'écriture d'un parser XML avec SAX en JAVA et j'ai un petit probleme. Si on prend l'exemple suivant :  
 

Citation :

<Personnes>
  <Personne>
    <nom>martin</nom>
    <prenom>charles</prenom>
  </Personne>
  <Personne>
    <nom>pierre</nom>
    <prenom>henri</prenom>
  </Personne>
</Personnes>


 
J'utilise l'API SAX pour parser le fichier XML ci-dessus. Je voudrais savoir s'il était possible de récupérer la valeur d'une balise particulière ? Par exemple je voudrais que mon parser me mette dans une liste (ou meme m'affiche tout simplement) l'ensemble des noms i.e. dès que mon parser rencontre la balise <nom> le contenu des balises est affiché. J'aurais donc au final une liste contenant l'ensemble des noms [martin,pierre].  
 
D'après ce que j'ai compris il s'agirait de combiner les méthodes startElement et characters d'un DefaultHandler, mais je ne vois pas trop comment faire, donc si vous avez des idées je suis preneur !  
 
Merci !  

Reply

Marsh Posté le 14-03-2007 à 17:59:46   

Reply

Marsh Posté le 15-03-2007 à 12:15:24    

Personne ? Bon ...

Reply

Marsh Posté le 15-03-2007 à 14:25:28    

C'est peut-être pourri mais t'as qu'à t'en inspirer

Code :
  1. public class NomHandler extends DefaultHandler {
  2. public final static String NOM = "nom";
  3. private boolean isCurrentElement = false;
  4. private List listNom = null;
  5. public void startDocument() throws SAXException {
  6.  listNom = new ArrayList();
  7. }
  8. public void startElement(String uri, String localName, String qName,
  9.   Attributes attributes) throws SAXException {
  10.  if (NOM.endsWith(qName)) {
  11.   isCurrentElement = true;
  12.  }
  13. }
  14. public void characters(char[] ch, int start, int length)
  15.   throws SAXException {
  16.  if (isCurrentElement) {
  17.   listNom.add(new String(ch, start, length));
  18.  }
  19. }
  20. public void endElement(String uri, String localName, String qName)
  21.   throws SAXException {
  22.  if (NOM.endsWith(qName)) {
  23.   isCurrentElement = false;
  24.  }
  25. }
  26. public void endDocument() throws SAXException {
  27.  System.out.println(listNom);
  28. }
  29. }



Message édité par phnatomass le 15-03-2007 à 14:26:00
Reply

Marsh Posté le 15-03-2007 à 16:24:44    

Merci beaucoup pour ton aide phnatomass !  
 
Effectivement ca me donne une bonne base pour continuer a jouer avec SAX !  
 
Que les dieux de l'Olympe soient avec toi !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed