Génération de fichier xml

Soyez le premier à donner votre avis sur cette source.

Snippet vu 14 562 fois - Téléchargée 28 fois

Contenu du snippet

Cette classe permet de générer des fichiers XML à partir d'une requête
sql SELECT portant sur une seule table.

Le fichier aura une dtd interne et cette structure :
<database>
<table id="?">
<champ1 type="java.sql.Types">valeur</champ1>
<champ2 type="java.sql.Types">valeur</champ2>
...
</table>
<table id="?">
....
</table>
.....
</database>

Ps : je me sert du DbManager que vous pourrez trouver ici :
http://www.javafr.com/article.aspx?Val=153

Source / Exemple :


import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;

/**

  • @author Duss
*
  • Classe permettant de générer des fichiers Xml
  • a partir d'une requete SELECT * FROM table [WHERE condition]
  • /
public class XmlMaker { public static void make(String query) { // Objet DbManager cf : http://www.javafr.com/article.aspx?Val=153 DbManager dbm = new DbManager(); dbm.connect(); try { //Récupération du nom de la table String tableName; String[] split = query.split(" "); int i; for (i = 0 ; i<split.length ; i++) { split[i] = split[i].toLowerCase(); if (split[i].equals("from")) break; } tableName = split[i+1]; // Récupération des métadonnées ResultSet rs = dbm.getQuery(query); ResultSetMetaData meta = rs.getMetaData(); //Création du fichier File toMake = new File(tableName+".xml"); toMake.createNewFile(); // Instanciation du flux d'écriture FileOutputStream out = new FileOutputStream(toMake); int colCount = meta.getColumnCount(); String[] colNames = new String[colCount]; int[] colTypes = new int[colCount]; String cols = ""; // Récupération des noms des colonnes et de leur type for (i = 0 ; i< colCount ; i++) { colNames[i] = meta.getColumnName(i+1); colTypes[i] = meta.getColumnType(i+1); if (i>0) cols += colNames[i]; if (i>0 && i+1 < colCount) cols += ","; } // Confection du fichier String xml = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone='yes'?>\n"; xml += "<!DOCTYPE database [ \n"; xml += "\t<!ELEMENT database ("+tableName+"+)>\n"; xml += "\t\t<!ELEMENT "+tableName+" ("+cols+")>\n"; xml += "\t\t<!ATTLIST "+tableName+" "+ colNames[0] +" CDATA #REQUIRED>\n"; for (i = 1 ; i< colCount ; i++) { xml += "\t\t\t<!ELEMENT "+colNames[i]+" (#PCDATA)>\n"; xml += "\t\t\t<!ATTLIST "+colNames[i]+" type CDATA #REQUIRED>\n"; } xml += "]>\n"; xml += "<database>\n"; rs.beforeFirst(); while (rs.next()) { xml += "\t<"+tableName+" "+colNames[0]+"=\""+rs.getObject(1)+"\">\n"; for (i = 1 ; i< colCount ; i++) { xml += "\t\t<"+colNames[i]+" type=\""+colTypes[i]+"\">"+ rs.getObject(i+1)+"</"+colNames[i]+">\n"; } xml += "\t</"+tableName+">\n"; } xml += "</database>"; // Ecriture et fermeture out.write(xml.getBytes()); out.close(); } catch (SQLException e) { System.out.println("sql : "+e.getMessage()); } catch (IOException e) { System.out.println("io : "+e.getMessage()); } } }

A voir également

Ajouter un commentaire

Commentaires

Messages postés
1
Date d'inscription
vendredi 8 décembre 2000
Statut
Membre
Dernière intervention
15 avril 2008

jé crée lé classe xmlmaker et dbmanager et aucune erreur qui apparai mai j trouve pa le fichier xml meme jé fai une recherche
dans kel dossier il se cré
merci
Messages postés
890
Date d'inscription
lundi 8 avril 2002
Statut
Membre
Dernière intervention
29 juillet 2004
12
et bien c est le parametre que reçoit la fonction ;)
String query !!
Duss
Messages postés
9
Date d'inscription
samedi 12 avril 2003
Statut
Membre
Dernière intervention
26 avril 2003

Salut!

Ca c'est tres beau mais je comprend pas ou est ta requete sql (Select * from table where condition)!
Merci!

Florian

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.