Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : extraire des donnees d'un fichier xml pour les utiliser [ Divers / Général ] (ramzi ramzi)

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é dans : string, system, out, println, xml


Répondre à ce message

Sujets en rapport avec ce message

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 AIDE sur Connexion BDD MySQL [ par zeldoi5 ] Bonjour tout le monde!Je sais que le problème dont je vais parler a déjà été traité plusieurs fois... Mais impossible de me connecter à ma base de don Lecture d'un fichier xml: je n'arrive pas à récupérer la valeur d'un noeud [ par hell2405 ] Bonjour J'essaye de lire un fichier xml en java mais lorsque je me sers de la méthode getNodeValue, elle me retourne null à chaque fois... Comment fai Surcharge : aide [ par Tachag ] Bonjour,Alors, j'ai essayé de faire une surcharge.  Ma question est : pourquoi lorsque je fais execute file, l'information n'apparaît pas?Je vous tran JPANEL [ par LeNeutrino ] je suis en projet et je souhaiterais faire un formulaire et pour les insertions de données et pour les consultations. j'utilise un jdbnavcombox relié problème d'affichage d'une chaine dans un servlet [ par 2tsiris ] Bonjour à tous, j'ai créer un servlet qui récupère une valeur dans une table mysql.J'ai donc créer une méthode qui se connect à la base et effectue optimisation d'un code [ par laurentbarbotin ] je souhaiterais optimiser un code et faire le pseudo code correspondant svp aidez moiimport biputil.*;import java.io.*; /** * @com.register ( c Reseau et internet [ par felouss ] bonjour,j ai un probleme pour envoyer un gros fichier via UDP,udp ne permet l envoie de paquet > 65kilo,pour cela du coté serveur j ai decoupé le fich ajout dans un tableau en java [ par samanona ] slt, j'ai un probleme au java et j'aimerai le resoudre  voila la methode que j'ai ecrit: String tab[][]=new String[80][4];Scanner s=new Scanner(Syst


Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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
Temps d'éxécution de la page : 0,56 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.