begin process at 2012 02 11 14:09:58
  Trouver un code source :
 
dans
 
Accueil > Forum > 

JAVA / J2EE / J2ME

 > 

Divers

 > 

Général

 > 

extraire des donnees d'un fichier xml pour les utiliser


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

extraire des donnees d'un fichier xml pour les utiliser

mardi 18 mars 2008 à 19:51:22 | extraire des donnees d'un fichier xml pour les utiliser

ramzi ramzi

Salut a tous

J'ai creer un parseur SAX qui extraire les donnee (element et leurs attributs) et les affiches dans la sortie standard(console)
j'ai ajoutee ainsi quelques lignes pour recuperer ces donnees dans un matrice pour les utiliser dans d'autres algorithmes , mais la compilation a generer des erreurs

voici l'algorithme : pour le test


package parseuravecsax;

//Parse un document XML en java avec L'API SAX
//on importe les APIs necessaire pour l'analyse du XML
import javax.swing.*;
import org.xml.sax.*;
import org.xml.sax.helpers.DefaultHandler;
import javax.xml.parsers.SAXParserFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
//pour l'acces au fichierS
import java.io.*;

public class AnalyseSAX extends DefaultHandler
{
//declaration d'un matrice et les compteurs
    public String[][] ELEMENTS_ATTRIBUTS; //tableau pour recuperer les donnees extraitent du fichier
    int x = 0;
    int y = 0;


    //Methode principale
    public void Parseur_fichier(String nomFichier)
    {

        //si le fichier qui est passe en argument est oublie --->erreur
        if (nomFichier.isEmpty() == true)
        {
            System.out.println("erreur, Le fichier est endommagee ou il n'existe pas");
            System.exit(1);
        }
        //on lance l'analyseur avec le fichier xml en parametre
        DefaultHandler handler = new AnalyseSAX();
        SAXParserFactory factory;
        factory = SAXParserFactory.newInstance();
        try
        {
            SAXParser saxparser = factory.newSAXParser();
            saxparser.parse(new File(nomFichier), handler);
        }
        catch (Throwable t)
        {
            //Si on a une erreur pendant l'analyse
            t.printStackTrace();
            System.exit(1);
        }
//        System.exit(0);
    }
//fin de L'analyse
    //les methodes qui suivnet sont appelees automatiquement par l'analyseur
    //lorsqu'un evenement  est detectee dans le fichier xml
    @Override
    public void startDocument() throws SAXException
    {
        System.out.println("debut du document");
    }

    @Override
    public void endDocument() throws SAXException
    {
        System.out.println("fin du document");
    }

    @Override
    public void startElement(String namespaceURI, String sName, String qName, Attributes attrs) throws SAXException
    {
        String eName = sName;
        if ("".equals(eName))
        {
            eName = qName;
        }
        System.out.println("balise ouverte:" + eName);

// recuperation de L'element trouvee dans le tableau --->ligne x colonne 0
        ELEMENTS_ATTRIBUTS[x][0].concat(eName);
        x += 1;

       
        if (attrs != null)
        {
            //Listage des attributs
            if (attrs.getLength() != 0)
            {
                System.out.println("Listage des parametres pour la balise " + eName + ":");
            }
            for (int i = 0; i < attrs.getLength(); i++)
            {
                String aName = attrs.getLocalName(i);//recuperation du nom de l'attribut
                if ("".equals(aName))
                {
                    aName = attrs.getQName(i);
                }
                System.out.println(" " + aName + "=\"" + attrs.getValue(i) + "\"");

//recuperation des valeurs des attributs dans les colonnes de tableau ---> par exemple ligne 1 colonne y             
                ELEMENTS_ATTRIBUTS[x][y].concat(attrs.getValue(i));
                y = i;

            }
        }
    }

    @Override
    public void endElement(String namespaceURI, String simpleName, String qualifiedName) throws SAXException
    {
        String nomElement = simpleName;
        if (nomElement.equals(""))
        {
            nomElement = qualifiedName;
        }
        System.out.println("Balise fermée : " + nomElement);
    }

    @Override
    public void characters(char[] ch, int start, int end) throws SAXException
    {
        String chaine = new String(ch, start, end);
        chaine = chaine.trim();
        if (!chaine.equals(""))
        {
            System.out.println("donnees : " + chaine);
        }
    }

    public void affichage_tab()
    {
        System.out.println("");
        System.out.println("le tableau");
        for (int i = 0; i < ELEMENTS_ATTRIBUTS.length; i++)
        {
            for (int j = 0; j < ELEMENTS_ATTRIBUTS[i].length; j++)
            {
                System.out.println(ELEMENTS_ATTRIBUTS[i][j]);
            }
        }
    }

}
....

pour les lignes en rouge L'erreur est provoquee car je n'ai pas initialiser le tableau
apres l'initialisation le programme marche mais apres l'execution de la methode en vert(affichage_tab) le tableau s'affichera avec les valeurs initials de la declaration faite

un solution.....?
mercredi 19 mars 2008 à 03:18:11 | Re : extraire des donnees d'un fichier xml pour les utiliser

uhrand

C'est plus simple d'utiliser une ArrayList:

...
import java.util.ArrayList;
import java.util.List;

public class AnalyseSAX extends DefaultHandler {
//declaration d'un matrice et les compteurs
    //tableau pour recuperer les donnees extraitent du fichier
    public List<List<String>> elementsAttributes = new ArrayList<List<String>>();
...
    public void startElement(String namespaceURI, String sName, String qName, Attributes attrs) throws SAXException {
        String eName = sName;
        if ("".equals(eName)) {
            eName = qName;
        }
        System.out.println("balise ouverte:" + eName);

// recuperation de L'element trouvee dans le tableau --->ligne x colonne 0
        List<String> ligne = new ArrayList<String>();
        ligne.add(eName);

        if (attrs != null) {
            //Listage des attributs
            if (attrs.getLength() != 0) {
                System.out.println("Listage des parametres pour la balise " + eName + ":");
            }
            for (int i = 0; i < attrs.getLength(); i++) {
                String aName = attrs.getLocalName(i);//recuperation du nom de l'attribut
                if ("".equals(aName)) {
                    aName = attrs.getQName(i);
                }
                System.out.println(" " + aName + "=\"" + attrs.getValue(i) + "\"");

//recuperation des valeurs des attributs dans les colonnes de tableau ---> par exemple ligne 1 colonne y            
                ligne.add(attrs.getValue(i));
            }
        }
        elementsAttributes.add(ligne);
    }
...
    public void affichage_tab() {
        System.out.println("");
        System.out.println("le tableau");
        for (List<String> line : elementsAttributes) {
            for (String column : line) {
                System.out.print(column+" ");
            }
            System.out.println("");
        }
    }
}
vendredi 21 mars 2008 à 00:25:02 | Re : extraire des donnees d'un fichier xml pour les utiliser

ramzi ramzi

j'ai essayee votre proposition , mais toujours pas de resultat a l'affichage..... ,,, le ArrayListe tout comme le matrice est vide , ca me gene beaucoup car le reste du programme que je fait s'arretera a cause de cette diffuculté (tout ce que je veut est de recuperer les element et leur attributs et les utiliser comme des variables pour les autres classes)

le temp passe si vite et moi je ne reste coinsee a cause de cette difficulte qui apparaitre rien devant les experts....


vendredi 21 mars 2008 à 02:56:19 | Re : extraire des donnees d'un fichier xml pour les utiliser

uhrand

Bon, voila un exemple complet: ParseurAvecSax.jar
Tu trouvera le code source dans le jar.
Amuse-toi bien!
vendredi 21 mars 2008 à 23:54:44 | Re : extraire des donnees d'un fichier xml pour les utiliser

ramzi ramzi

Merci beaucoup, je veux le tester 
dimanche 23 mars 2008 à 21:23:36 | Re : extraire des donnees d'un fichier xml pour les utiliser

ramzi ramzi

Salut uhrand

say ca marche  , merci pour votre aide
on reste on contact si je trouve d'autres problemes

merci encore
bonne journee.
lundi 24 mars 2008 à 23:53:51 | Re : extraire des donnees d'un fichier xml pour les utiliser

ramzi ramzi

est ce que je peut transformer ce array list en un tableau de String


mardi 25 mars 2008 à 10:05:27 | Re : extraire des donnees d'un fichier xml pour les utiliser
mardi 25 mars 2008 à 22:10:38 | Re : extraire des donnees d'un fichier xml pour les utiliser
mercredi 26 mars 2008 à 05:52:24 | Re : extraire des donnees d'un fichier xml pour les utiliser

uhrand

crée un tableau et copie la liste dedans

1 2

Cette discussion est classée dans : string, system, out, println, xml


Répondre à ce message

Sujets en rapport avec ce message

pb de SAX [ par d12ahm ] bonjour a t je suis debutant sur java j'crée un parser saxpour lire un fichier xml sous jbuilder9 [color=red]voila le code:[/color] //*************** Affichage d'une image locale dans une applet [ par manu94 ] Bonjour,Sur mon site perso, j'ai une page permettant d'uploader des images sur mon site. Cette partie fonctionne, seulement je voudrai pouvoir prévisu Jtable AbstractTableModel bug dans onglet toutes les JTables se mettent à jour [ par aforpien ] Bonsoir à tous, Je suis confronté à un problème lors de la génération de model pour jTable. J'utilise une classe trouvée sur un site, permettant de r parcouurir des fichiers en java [ par fattoo88 ] salut j'ai fait un code qui parcoure une fichier que j'ai mit dans le workspace mais je veux parcourir une répertoire de fichier et appliquer se code lire le contenu d'une balise xml en java [ par linaing ] salut[^^!1] salut voici j'ai une partie de code qui permet de lire et afficher le contenu d'un fichier xml mais je ai pas encore trouver l'instruction programme java [ par desco182 ] salut ! S'il vous plait j'aimerais avoir votre aide concernant ce programme que je dois écrire en java arrive la j'ai des difficultés merci d'avance comboBox#SQL#JTable [ par starachraf ] Bonjour, je fait un progrmme qui connecte à la base de donées tant que cocher la case Fixe: [code=java]if (e.getSource()==Fixe) { try { telechargement FTP [ par iha07 ] Bonjour, Mon programme ne se compile pas.qlq'un pourra détecter ou est l'erreur? merci d'avance package javaapplication2; import java.io.Buffere compatibilité argument File String [ par sido722 ] Mon erreurMafenetre4.java:181: tests(java.io.File) in Mafenetre4 cannot be applied to (java.lang.String) tests(file.getAbsolutePath()); acces au contenu d'un message avec javamail [ par amine hayat ] Bonjour. Voici mon problème.Je suis en train de faire une appli qui doit recevoire et envoyer des emails dans une boîte mail. mon probléme est que je


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,370 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales