Bonjour,
J'ai un petit code qui demande la balise à extraire du fichier xml en entrée et donne en retour son contenu, mais il ne retourne que la première balise, est ce que quelqu'un pourrait m'aider à le corriger svp.
Merci d'avance.
/* -*-Java-*- (encoding:iso8859-1)
* ########################################################################
*
* FILE: "XML.java"
* Author: Frédéric Boulanger
* E-mail: <Frederic.Boulanger@supelec.fr>
* mail: Supélec - Département Informatique
* 3 rue Joliot-Curie, 91192 Gif-sur-Yvette, France
* www: <
http://wwwsi.supelec.fr/fb/>
*
* History
*
* modified by rev reason
* ---------- --- --- -----------
* 2006-11-24 FBO 1.0 original
*
* ########################################################################
*/
//Représente un fichier sur disque
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.w3c.dom.NodeList;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
public class Exemple {
public static void main(String[] args) {
// Notre fichier d'exemple XML
File f = new File("exemple.xml");
SAXParser p = null;
// On crée maintenant un parseur SAX pour relire notre fichier
try {
p = SAXParserFactory.newInstance().newSAXParser();
// On active les namespaces, sinon, on ne récupèrera pas le nom
// des éléments dans les méthodes start/endElement
p.getXMLReader().setFeature("
http://xml.org/sax/features/namespaces", true);
} catch (ParserConfigurationException pce) {
System.err.println("Impossible de créer le parseur SAX.");
System.err.println(pce);
System.exit(1);
} catch (SAXException saxe) {
System.err.println("Erreur SAX.");
System.err.println(saxe);
System.exit(1);
}
// On demande maintenant au parseur d'analyser le fichier en signalant
// les événements à une instance de MonGestionnaire.
try {
p.parse(f, new MonGestionnaire());
} catch (SAXException saxe) {
System.err.println("Erreur SAX.");
System.err.println(saxe);
System.exit(1);
} catch (IOException ioe) {
System.err.println("Erreur de lecture du fichier.");
System.err.println(ioe);
System.exit(1);
}
}
}
/**
* Notre gestionnaire d'événements SAX
*/
class MonGestionnaire extends DefaultHandler {
/** Appelée avant toutes les autres méthodes, au début du document. */
// public void startDocument() {
// System.out.println("--Début du document--");
// }
/** Appelée après toutes les autres méthodes, à la fin du document. */
// public void endDocument() {
// System.out.println();
// System.out.println("--Fin du document--");
// }
/**
* Appelée à chaque fois qu'un élément est rencontré.
* - uri est l'URI de l'espace de nom auquel appartient l'élément
* - localName est le nom de l'élément (sans préfixe d'espace de nom)
* - qName est le nom qualifié de l'élément (avec préfixe d'espace de nom)
* - attributes est la liste des attributs de l'élément.
* @throws IOException
*/
public void startElement(String uri, String localName,
String qName, Attributes attributes) {
BufferedReader keyboard=new BufferedReader(new InputStreamReader(System.in));
String line = "";
System.out.print("donner la balise");
try{
line=keyboard.readLine();
}catch(IOException e){
System.out.println("err");
}
//int j=0;
if(localName.equals(line)){
System.out.print("<" + localName);
for (int i = 0; i < attributes.getLength(); i++) {
System.out.print(" " + attributes.getLocalName(i)
+ "=\"" + attributes.getValue(i) + "\"");
}
System.out.print(">");
}
}
/** Appelée à chaque fois qu'une fin d'élément est rencontrée. */
public void endElement(String uri, String localName, String qName) {
System.out.print("</" + localName + ">");
}
/** Fournit les données trouvées à l'intérieur d'un élément. */
public void characters(char[] ch, int start, int length) {
System.out.print(new String(ch, start, length));
}
/** Fournit des espaces ignorables trouvés à l'intérieur d'un élément. */
public void ignorableWhitespace(char[] ch, int start, int length) {
for(int i = 0; i < length; i++) {
System.out.print('_');
}
// System.out.print(new String(ch, start, length));
}
}