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 : parser java exportant du XML dans mySQL [ Archives / Divers ] (sandji)

jeudi 24 mars 2005 à 13:31:28 | parser java exportant du XML dans mySQL

sandji



Bonjour,

Je travaille sur un projet de gestion administrative d'une association.
J'ai effectué des recheches dans le but de trouver un parser en java exportant du XML dans une base de données MySql.
Malheureusement je n'ai rien trouvé.
Est ce que vous connaissez un parser correspondant à ces critères?

Merci d'avance,
Sandrine

lundi 11 avril 2005 à 09:42:19 | Re : parser java exportant du XML dans mySQL

zeldoi5

Membre Club
Bonjour, c'est à peu près ce que je fais (enfin ce que j'essaie de faire!) :
j'utilise un parseur SAX en java pour parser le fichier XML
Ensuite c'est assez simple d'accéder à la base de données  MySQL avec Java...

Si tu veux que je t'envoie ce que je fais, envoie moi un mail.

mercredi 13 avril 2005 à 09:41:36 | Re : parser java exportant du XML dans mySQL

zeldoi5

Membre Club
VOici donc mon code :

J'ai écrit mon code à partir d'un programme éxistant (assez bugé tout de même...).
J'ai une classe principale (classe Main.java), une seconde qui me lit un  fichier XML et qui dois insérer les données contenues dans le fichier xml dans MySQL (classe LireXML.java) et une troisième qui me fait la connexion à la base de données (mais celle ci ne fonctionne pas, ej me prends la tête dessus......)
J'utilise un parseur SAX pour l'XML (c'est assez simple à utiliser, mais à comprendre pas simple du tout! enfin pour moi!!)
Voici mon programme :

Classe Main :
import java.util.*;
import java.io.*;
import java.sql.*;
import java.awt.*;
import java.lang.*;


public class Main
{  
 public static void main(String[] args)
 {  

  /*if(args.length<1)
        {
         System.out.println("Vous devez donner le chemin du fichier *.xml a injecter dans la base de données!");
        }
        else*/
  {
         try
         {
          //String url=args[0];
          String url="test3.xml";
          //System.out.println("Fichier a analyser : "+url);
          LireXML fichierxml = new LireXML();
          fichierxml.LireXML(url); 
         }
   catch(Exception e)
   {
    System.out.println(e.getMessage());
   }
 //System.out.println("\nFin du programme.\n");
System.exit(0);
  }
 } 
}


Classe LireXML :
import java.io.*;
import java.util.*;
import java.sql.*;
import java.lang.*;
import org.xml.sax.*;
import javax.xml.parsers.*;
{
 // Pour gérer l'indentation du document final.
 private String indentString = "        ";
 private int indentLevel = 0;
 //public String balise;
 public String mbalise="";
 public String mvaleur="";
 public String result="";

 // Démarrage de votre programme
 public static void LireXML (String url) {
  System.out.println("Entree dans LireXML");
  /*if (url.length != 1) {
   System.err.println ("Vous devez preciser un ficher a analyser!");
   System.exit(-1);
  }*/
  SAXParserFactory factory = SAXParserFactory.newInstance();
  try
  {
   SAXParser saxParser = factory.newSAXParser();
   saxParser.parse( url, new LireXML() );
   //saxParser.parse( new File(argv [0]), new Echoing() );
   //saxParser.parse(new File(argv [0]), new Echoing() );
  }
  catch (Throwable t) {t.printStackTrace ();}
  System.exit(0);
  
  /////////////////////////////////////////////////////////////
  // Connexion à la base de Données   /////////////////////////
  /////////////////////////////////////////////////////////////
  try
  {
   DataBaseManager db = new DataBaseManager();
  }
  catch (Exception e) {
   //System.err.println(requete);
   //onError();
   System.err.println("Erreur pendant la connexion à la base de donnees : " + e.getMessage());
  }
 }


 /////////////////////////////////////////////////////////////
 // Les gestionnaires d'évènements SAX ///////////////////////
 /////////////////////////////////////////////////////////////
 
 public void startDocument () throws SAXException
 {
  System.out.println("\n __START DOCUMENT__ \n");
 }
 
 public void endDocument () throws SAXException
 {
  System.out.println("\n __END DOCUMENT__ \n");
  if (indentLevel > 0) System.out.println("AIEEEE probleme....");
 }
 
 public void startElement (String name, AttributeList attrs) throws SAXException
 {
  ResultSet result;
    try
  {
   //System.out.println("Pré appel à DataBaseManager");
   //DataBaseManager db = new DataBaseManager();
   
   DataBaseManager db = new DataBaseManager("192.168.0.52","Serv","toto");
   
   //System.out.println("Post appel à DataBaseManager");
   //System.out.println("Etat de l'ouverture de la base de données : "+db);
   tabs();
   //System.out.print("<"+name);
   //balise = name;
    if (attrs != null) {
    for (int i = 0; i < attrs.getLength (); i++) {
           System.out.println();
     tabs();
     //System.out.print("    ");
     //System.out.print(attrs.getName (i));
     mbalise=attrs.getName (i);  //Prend ici la valeur de la balise et la met dans la variable
             // mbalise
     //System.out.print(mbalise+" ");
     //System.out.print(" = \"");
     //System.out.print(attrs.getValue (i));
     mvaleur=attrs.getValue (i);  //Prend ici la valeur après la balise et la met dans la
             // variable mvaleur
     //System.out.print(mvaleur+" ");
     //System.out.print("\"");

   //Test sur le contenu de mvaleur
    }
   }
   if (attrs.getLength() > 0) { System.out.println(""); tabs(); }
   //System.out.println(">");
   indentLevel++;
  }
  catch (Exception e) {
   //System.err.println(requete);
   //onError();
   System.err.println("Erreur pendant le traitement et/ou la connexion a la base de donnees : " + e.getMessage());
  }
 }

// Fonctions de Fin d'élément  
 public void endElement (String name) throws SAXException
 {
  indentLevel--;
  tabs();
  //System.out.println("</"+name+">");
 }


// Fonctions de Contenus de balise
 public void characters (char buf [], int offset, int len) throws SAXException
 { String s = new String(buf, offset, len); }

 // Fonctions utilitaires
 private void tabs()
 {
  for(int i=0;i<indentLevel;i++)
  { System.out.print(indentString);  }
 }

 // Connexion à la base de Données
 //db.close(); 
}


dimanche 8 mai 2005 à 23:18:07 | Re : parser java exportant du XML dans mySQL

sandji



Merci beaucoup pour ta réponse, je suis partie dans le même ordre d'idées que toi, j'utilise sax1 mais j'ai des petits problèmes pour la connection à la base de do, je dois avoir des erreurs dans mon code...
Et je dois dire que les tutoriaux n'aident pas beaucoup car c'est très généralistes et compliquées...
Par contre, pour comparer les balises puis envoyer leur contenu dans la bdd , tu le fais dans la méthode startElement ou characters?

Et toi, ton projet, ça a aboutit? tout marche?

lundi 9 mai 2005 à 10:01:40 | Re : parser java exportant du XML dans mySQL

zeldoi5

Membre Club

 De rien.
Pour comparer les balises je le fais dans startElement :

//-------------------------------------------------------------------------
// START ELEMENT
 public void startElement (String name, AttributeList attrs) throws SAXException
 {
  String datecomplete="";
  String date1="";
  String date2="";
  ResultSet result;
  try
  {
   tabs();
    if (attrs != null)
    {
     for (int i = 0; i < attrs.getLength (); i++)
     {
      System.out.println();
      tabs();
      mbalise=attrs.getName (i);  //Prend ici la valeur de la balise et la met dans la variable
              // mbalise
      System.out.print(mbalise+" ");
      mvaleur=attrs.getValue (i);  //Prend ici la valeur après la balise et la met dans la
              // variable mvaleur
      System.out.print(mvaleur+" ");
      if (mbalise=="X")
      {
      System.out.print("Identifiant vaut : X");
      }
      if (mbalise=="Y")
      {
      System.out.print("Identifiant vaut : X");
      }
      .................
     }
   }
   if (attrs.getLength() > 0) { System.out.println(""); tabs(); }
   indentLevel++;
  }
  catch (Exception e) { System.err.println("Erreur pendant le traitement : " + e.getMessage()); }
 }
//----------------------------------------------------------------


Les tutoriels ne m'ont pas trop apporté non plus....
Par contre les codes des autres si!!!


Tu veux ma classe de connexion à MySQL?

Au fait, quelle version de MySQL utilises tu? (car j'ai rencontré des problèmes de connexion avec les dernières versions cf. : v > 4.1.X)
Est ce que tu arrives à te connecter avec phpMyAdmin?
(travailles tu sur le même poste?)

Je pense que tu dois avoir des problèmes de drivers JDBC, moi j'ai galéré avec ce dernier, je vais te dire comment faire.... :

download le drivers jdbc ( mysql-connector-java-3.XXX-bin.jar ) à l'adresse suivante :
[ Lien ]

Tu le télécharges et tu mets le fichiers jar dans  C:\j2sdk1.X\jre\lib\ext (en fait c'est le fichier Driver.class qui se trouve dans \org\gjt\mm\mysql qui est très important....)

Après tu te connectes  par :
      Class.forName("org.gjt.mm.mysql.Driver");
Et tu établis ta connexion par :
connection = DriverManager.getConnection("jdbc:mysql://serveur:port/base",login,password);
ou
connection = DriverManager.getConnection("jdbc:mysql://serveur/base",login,password); si le port utilisé pour le serveur de BDD est par défaut (3306 à ce qu'il me semble....)


Voici ma classe de connexion  GestionBDD :


//-----------------------------------------------------------------------------------------
import java.util.*;
import java.io.*;
import java.sql.*;

public class GestionBDD
{
 Connection connection=null;
 Statement stmt;
 public String VilleTrouvee,AdresseTrouvee,DeptTrouve,NomImmeubleTrouve,AdresseTotale;
 
 
 private Connection connect;
 private Statement state;
 private String url = null;
 private String login = null;
 private String pwd = null;
 private static int _numThread = 200;

 // Méthode de création de base de données
 public void CreateBase(String url, String username, String password)
 {
  String AddT =
  "create table if not exists table_essai(..................)";
 // Tentative de connexion à la base de données :
  try
  {
      Class.forName("org.gjt.mm.mysql.Driver");
  }
     catch (Exception e)
     {
      System.out.println(
      "Impossible  d'effectuer le Class.forname.\n" +
         "Impossible d' enregistrer the Driver JDBC.\n" +
         "Assurez vous que le driver JDBC est dans le\n" +
         "classpath.\n" );
        System.exit(1);
     }
  try
  { connection = DriverManager.getConnection(url, username, password); }
  catch (SQLException e)
  {
      System.out.println(
   "Impossible d'etablir une connexion à la database.\n" +
      "Cause(s) imputee(s): " + e.getMessage());
     System.exit(1);
  }
  try
  {
  try
  {
   stmt = connection.createStatement() ;
   stmt.executeUpdate(AddT);
  }
     catch (SQLException e)
  {
   System.out.println(
         "Une erreur est apparue\n" +
         "Message SQLException: " + e.getMessage());
     }
    }

// Méthode d'ouverture de la Base de Données :
    public void OuvertureBase(String url, String username, String password)
 { System.out.println("\nOuverture Base de Donnees MySQL en cours...");
  try
  {
      Class.forName("org.gjt.mm.mysql.Driver");
     }
     catch (Exception e)
     {
      System.out.println(
      "Impossible  d'effectuer le Class.forname.\n" +
         "Impossible d' enregistrer the Driver JDBC.\n" +
         "Assurez vous que le driver JDBC est dans le\n" +
         "classpath.\n" );
        System.exit(1);
     }
   try
     { connection = DriverManager.getConnection(url, username, password); }
     catch (SQLException e)
     {
      System.out.println(
   "Impossible d'etablir une connexion aà la database.\n" +
   "Fin de la connexion prematuree.\n" +
         "Cause(s) imputee(s): " + e.getMessage());
        System.exit(1);
  }
  try
  {
   stmt = connection.createStatement() ;
  }
     catch (SQLException e)
  {
   System.out.println(
         "Une erreur est apparue\n" +
         "Message SQLException: " + e.getMessage());
     }
  System.out.println("Base de Donnees MySQL Ouverte avec Succes!");
 }

// Méthode de fermeture de base de données :
 public void CloseBase()
 { System.out.println("\nFermeture Base de Donnees MySQL en cours...");
  try
  {
   // .... Il faut utiliser 'connection' pour dialoguer avec la base de données
   stmt = connection.createStatement() ;
   stmt.close() ;
   connection.close();
       }
     catch (SQLException e)
  {
        System.out.println(
         "Une erreur est apparue\n" +
         "Message SQLException: " + e.getMessage());
        return;
     }
     System.out.println("\nBase de Donnees MySQL Fermee avec Succes!\n"); 
 }

//----------------------------------------------------------------------------------

En ce qui me concerne j'ai beaucoup travaillé sur du PHP ces derniers temps et pas trop avancé sur le traitement de l'arborescence XML, mais je vai m'y remettre...Donc one ne peut pas dire que ça marche!

Voili voulou, n'hésite pas si t'as des soucis!


dimanche 22 mai 2005 à 13:59:34 | Re : parser java exportant du XML dans mySQL

sandji


je voudrais tout d'abord te remeercier pour ton aide, ça m'a permis de bien avancer.
Mon parser marche nickel, je récupère les éléments mais maintenet j'ai des problèmes de connection à ma base de données, j'ai télécharger les fichiers que tu m'avait dit mais je ne vois pas où les mettre ni comment .

Mon code est le suivant :

private String url ="jdbc:mysql://localhost/gestionmind";
    private String user = "nobody";
    private String password = null;
    try {
        Class.forName("com.mysql.jdbc.Driver");
    }        catch (Exception e)
     {  
            System.out.println(
                       "Impossible  d'effectuer le Class.forname." +
                   "Impossible d' enregistrer the Driver JDBC." +
                   "Assurez vous que le driver JDBC est dans le\n" +
                   "classpath.\n" );
            System.exit(1);
            }

        try{  
            con = DriverManager.getConnection(url,user,password);
    }
   
    catch(SQLException ex) {
    System.out.println("erreur pendant la connexion à la base de données " + ex.getMessage());
    System.exit(1);
    }


Et il m'affiche le message d'erreur suivant :
erreur pendant la connexion à la base de données No driver found for localhost

Pour l'instant les dossiers .jar sont à l'emplacement suivant : /home/mind/java-connector/mysql-connector-java/ alors que ma classe pour me connecter à la base de do est à l'emplacement var/www/java/mysql .

Est ce que tu vois comment je dois faire et ce que je dois faire.

Je sais que ça touche le classpath mais je n'y connais vraiment rien du tout sur ça.

Merci beaucoup ben pour ta patience,
Sandrine


lundi 23 mai 2005 à 09:20:54 | Re : parser java exportant du XML dans mySQL

zeldoi5

Membre Club

Bonjour, c'est assurément un problème de drivers JDBC, tu as plusieurs possibilités :
- soit tu mets manuellement le fichier .jar dans le répertoire utilisé par java, pour moi c'est :
     C:\j2sdk1.4.0\jre\lib\ext\
- soit tu fixes manuellement le classpath, dans une fenêtre MS-DOS par la commande suivante :
     set classpath=C:\j2sdk1.4.0\jre\lib\ext\mysql.jar;.\

Pour être sûr que ça marche j'ai fait les deux! Mais l'un ou l'autre suffisent! Tiens moi vite au courant!


lundi 23 mai 2005 à 09:33:30 | Re : parser java exportant du XML dans mySQL

zeldoi5

Membre Club
J'ai oublié : mysql.jar étant le driver JDBC mysql-connector-3.17...jar renommé! (j'avais aps envie de tout retapper dans le classpath...)



Cette discussion est classé dans : java, mysql, xml, parser, exportant


Répondre à ce message

Sujets en rapport avec ce message

Parser du XML avec JDOM en java [ par red210 ] Voila je pose une ptit questin concernant le XML... Je viens tout juste de lire un super tuto pour lire et générer du XML ca me pousse à m'y mettre ca codification des accents différents sous mySql et JAVA [ par momotaro ] momotaroBonjour, je souhaite récupérer des données sous mysql qui malheureusement contiennent des accents, or la codification des accents à l'air diff java/Mysql [ par kainblueriver ] Bonjour a tous J'ai un gros probleme avec une petite application en java qui se connecte à une base de donnée mysql. Quand je veux inserer des don JAVA & XML DOM [ par Titiboon ] Bonjour à tous,Je sais parcourir un document xml de bout en bout en utilisant java et dom mais je n'arrive pas à commencer de parser le document à par SOAP / Webservice [ par Biggooch ] Bonjour, j'ai un problème avec l'utilisation d'un webservice. Le webservice est écrit en dotNET, et je dois réaliser une application java autour de ce Serveur MySQL embarqué dans une appli JAVA ??? [ par Jossss ] Bonjour,C'est mon premier post ici, Yes ! Bon et bien voilà après avoir cherché un peu partout sans trouver je me lance:Je me fais une petite appli pe structurer fichier texte avec xml [ par emiraMh ] bonjour,chui en train de développer une application réseau avec java ; écoute du port 514, enregistrement des paquets reçus dans des fichiers textes ( probleme d'utilisation JDBC [ par pimter ] Bonjour à tous,Voila, j'ai un gros problème.J'aimerai me connecter à une base de données mySQL via un programme Java. J'ai télécharger le driver JDBC parser xml | Handler | question [ par Yanzisf ] Bonjour, voici un bout d'un xml que je parse avec SAX : [code]                      &nb JFreeChart et XML [ par jfviguier ] Je voudrais créer un PieChart grace à JFreeChart depuis les données XML : Zone1 20


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

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

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,499 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é.