Creer un fichier xml avec dom et u e base de donnees

Soyez le premier à donner votre avis sur cette source.

Snippet vu 25 995 fois - Téléchargée 30 fois

Contenu du snippet

c un programme que j'ai fait pour pouvoir recuperer les donnees de ma base et de les mettre ds un fichier xml.

il marche plutot bien ,mais il est specifique a mon application, mais je pense qu'il peut vous aidez

Source / Exemple :


package ParserXML;
import java.io.*;
import javax.xml.parsers.*;
import org.w3c.dom.*;
import org.w3c.dom.NodeList.*;
import javax.xml.transform.*;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.dom.DOMSource;
import conf.*;
import java.sql.*;
import java.lang.*;
import java.util.*;
import javax.naming.directory.*;
import datejour.*;

/**

  • <p>Titre : sogescom</p>
  • <p>Description : gestion commerciale</p>
  • <p>Copyright : Copyright (c) 2003</p>
  • <p>Société : </p>
  • @author loic
  • @version 1.0
  • /
public class DevisDOM { private long id; private String type; public ResultSet rs_corps=null; public ResultSet rs_ligne=null; public Connectdb db=null; public String code=""; public String id_type=""; public long cont_id; private String erreur="erreur : <br>"; public DevisDOM(long id,String type){ this.id=id; this.type=type; if(type.equals("devis")){ id_type="dev"; } if(type.equals("facture")){ id_type="fac"; } if(type.equals("bl")){ id_type="bl"; } String base = ""; String log_db = ""; String pass_db = ""; String pilote = "org.postgresql.Driver"; String url = "jdbc:postgresql://localhost/"; db = new Connectdb(); db.connect(base, log_db, pass_db, pilote, url); } public void CreerXml(boolean image) { double total_ht=0; double total_tva=0; double total_ttc=0; double accompte_double=0; double netapayer=0; DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); try { //------------------------construction du fichier xml-------------------------- DocumentBuilder builder = factory.newDocumentBuilder(); Document document = builder.newDocument(); //creation de l element racine <corps> Element corps = (Element) document.createElement("document"); // attribut corps.setAttribute("type", type); corps.setAttribute("id",id+""); if (image){ corps.setAttribute("image","true"); } //on le place ds l'arbre document.appendChild(corps); //===============================entete======================================== rs_corps = db.getQuery("select * from "+type+" where "+id_type+"_id=" +id+""); if(rs_corps.next()){ code=rs_corps.getString(id_type+"_code"); //creation DE LA BALISE <date_creation> Element date_creation = document.createElement("date_creation"); // on lui met la valeur entre le balise date_creation.appendChild(document.createTextNode(Datejour.dateformatsql(rs_corps.getDate( id_type+"_date_creation").toString()))); //appartient a entete corps.appendChild(date_creation); //creation DE LA BALISE <date_validite> Element date_validite = document.createElement("date_validite"); // on lui met la valeur entre le balise date_validite.appendChild(document.createTextNode(Datejour.dateformatsql(rs_corps.getDate( id_type+"_date_validite").toString()))); //appartient a entete corps.appendChild(date_validite); //creation DE LA BALISE <client> Element client = document.createElement("client"); // on lui met la valeur entre le balise //cont_id=rs_corps.getLong( "cont_id"); client.appendChild(document.createTextNode(""));//appartient a reference corps.appendChild(client); //creation DE LA BALISE <code> Element code = document.createElement("code"); // on lui met la valeur entre le balise code.appendChild(document.createTextNode(rs_corps.getString( id_type+"_code"))); //appartient a reference corps.appendChild(code); //creation DE LA BALISE <status> Element status = document.createElement("status"); // on lui met la valeur entre le balise status.appendChild(document.createTextNode(rs_corps.getString( id_type+"_status"))); //appartient a reference corps.appendChild(status); if(!type.equals("bl")){ //creation DE LA BALISE <paiement> Element paiement = document.createElement("paiement"); // on lui met la valeur entre la balise paiement.appendChild(document.createTextNode(rs_corps.getString(id_type+"_paiement"))); corps.appendChild(paiement); //creation DE LA BALISE <accompte> Element accompte = document.createElement("accompte"); // on lui met la valeur entre le balise accompte.appendChild(document.createTextNode(java.lang.String.valueOf(rs_corps.getDouble(id_type+"_accompte")))); corps.appendChild(accompte); accompte_double=rs_corps.getDouble(id_type+"_accompte"); } } //rs_contact = db.getQuery("select * from contact where cont_id='" +cont_id+"'"); // if(rs_contact.next()){ //creation DE LA BALISE <societe> appartient a coordonnees Element societe = document.createElement("societe"); // on lui met la valeur entre le balise societe.appendChild(document.createTextNode("societe")); corps.appendChild(societe); //creation DE LA BALISE <contact> appartient a coordonnees Element contact = document.createElement("contact"); // on lui met la valeur entre le balise contact.appendChild(document.createTextNode("contact")); corps.appendChild(contact); //creation DE LA BALISE <adresse> appartient a coordonnees Element adresse = document.createElement("adresse"); // on lui met la valeur entre le balise adresse.appendChild(document.createTextNode("adresse")); corps.appendChild(adresse); //creation DE LA BALISE <cp> appartient a coordonnees Element cp = document.createElement("cp"); // on lui met la valeur entre le balise cp.appendChild(document.createTextNode("cp")); corps.appendChild(cp); //creation DE LA BALISE <ville> appartient a coordonnees Element ville = document.createElement("ville"); // on lui met la valeur entre le balise ville.appendChild(document.createTextNode("ville")); corps.appendChild(ville); //} //==========================debut du traitement des lignes===================== // boucle sur toutes les lignes appartenant au corpss rs_ligne = db.getQuery("select * from ligne where "+id_type+"_id='" +id+"' order by lig_ordre"); while(rs_ligne.next()) { //-----------------------------debut ligne------------------------------------ //creation d'un nouveau noeud <ligne> appartenant a corpss Element ligne = document.createElement("ligne"); // on lui mais comme attribut son numero de ligne ds le corpss ligne.setAttribute("ordre",java.lang.String.valueOf(rs_ligne.getInt("lig_ordre"))); ligne.setAttribute("id",java.lang.String.valueOf(rs_ligne.getLong("lig_id"))); corps.appendChild(ligne); //creation DE LA BALISE <ref> appartient a ligne Element ref = document.createElement("ref"); // on lui met la valeur entre la balise ref.appendChild(document.createTextNode(rs_ligne.getString("lig_ref"))); ligne.appendChild(ref); //creation DE LA BALISE <description> appartient a ligne Element description = document.createElement("description"); // on lui met la valeur entre la balise String designation=rs_ligne.getString("lig_designation"); description.appendChild(document.createTextNode(designation)); ligne.appendChild(description); //creation DE LA BALISE <quantite> appartient a ligne Element quantite = document.createElement("quantite"); // on lui met la valeur entre le balise quantite.appendChild(document.createTextNode(java.lang.String.valueOf(rs_ligne.getDouble("lig_quantite")))); ligne.appendChild(quantite); if(!type.equals("bl")){ //creation DE LA BALISE <pu_ht> appartient a ligne Element pu_ht = document.createElement("pu_ht"); // on lui met la valeur entre le balise pu_ht.appendChild(document.createTextNode(""+rs_ligne.getDouble("lig_pu"))); ligne.appendChild(pu_ht); //creation DE LA BALISE <total_ht> appartient a ligne Element ligne_ht = document.createElement("total_ht"); // on lui met la valeur entre le balise ligne_ht.appendChild(document.createTextNode(""+rs_ligne.getDouble("lig_prix_total"))); ligne.appendChild(ligne_ht); //creation DE LA BALISE <tva> appartient a ligne Element tva = document.createElement("tva"); // on lui met la valeur entre le balise tva.appendChild(document.createTextNode(""+rs_ligne.getDouble("lig_tva")+"")); ligne.appendChild(tva); //calcul du prix total ht et de la tva total total_tva+=rs_ligne.getDouble("lig_prix_total")*(rs_ligne.getFloat("lig_tva")/100); total_ht+=rs_ligne.getDouble("lig_prix_total"); //------------------------------fin ligne-------------------------------------- }//fin if }//fin while ligne if(!type.equals("bl")){ total_tva=(Math.round(total_tva*Math.pow(10,2)) )/ (Math.pow(10,2)); total_ht=(Math.round(total_ht*Math.pow(10,2)) )/ (Math.pow(10,2)); total_ttc=total_tva+total_ht; total_ttc=(Math.round(total_ttc*Math.pow(10,2)) )/ (Math.pow(10,2)); if(type.equals("facture")){ netapayer=(Math.round((total_ttc-accompte_double)*Math.pow(10,2)) )/ (Math.pow(10,2)); //creation DE LA BALISE <netPayer> Element netpayer = document.createElement("netpayer"); // on lui met la valeur entre le balise netpayer.appendChild(document.createTextNode(java.lang.String.valueOf(netapayer))); //appartient a reference corps.appendChild(netpayer); } //creation DE LA BALISE <doc_tva> Element doc_tva = document.createElement("doc_tva"); // on lui met la valeur entre le balise doc_tva.appendChild(document.createTextNode(java.lang.String.valueOf(total_tva))); //appartient a reference corps.appendChild(doc_tva); //creation DE LA BALISE <doc_ht> Element doc_ht = document.createElement("doc_ht"); // on lui met la valeur entre le balise doc_ht.appendChild(document.createTextNode(java.lang.String.valueOf(total_ht))); //appartient a reference corps.appendChild(doc_ht); //creation DE LA BALISE <doc_ttc> Element doc_ttc = document.createElement("doc_ttc"); // on lui met la valeur entre le balise doc_ttc.appendChild(document.createTextNode(java.lang.String.valueOf(total_ttc))); //appartient a reference corps.appendChild(doc_ttc); } //=========================creaton du fichier xml=============================== code=code.substring(0,9); File baseDir = new File("/var/www/html/tomcat/sogescom/doc"); //File baseDir = new File("/var/www/html/tomcat/sogescom/doc"); File f = new File(baseDir, code+".xml"); StreamResult result=new StreamResult(f); DOMSource source =new DOMSource(document); TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); transformer.setOutputProperty(OutputKeys.METHOD, "xml"); transformer.setOutputProperty(OutputKeys.INDENT, "yes"); transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "no"); transformer.transform(source,result); } catch(Exception e) { erreur=erreur+"<br>"+e+"<br>"+e.getMessage()+"<br> "; } } public String getErrorMessage(){ return erreur; } }

Conclusion :


Normalement ca marche bien, peut etre des amelioration sont possible

A voir également

Ajouter un commentaire

Commentaires

halimkosksi
Messages postés
1
Date d'inscription
lundi 25 avril 2011
Statut
Membre
Dernière intervention
25 avril 2011

j'ai un programme qui utilise le DOM et le SAX pour extraire et ajouter dons un fichier xml les données d'un framework de cartographie qui utilise google map comme api et je ne trouve aucune exemple pour simplifier les taches .
merci de m'aider .
SanguiniusBo
Messages postés
2
Date d'inscription
mercredi 9 juin 2010
Statut
Membre
Dernière intervention
9 juin 2010

euh j'ai été un peu vite là...
quelqu'un peut il m'aider à recuperer les lignes erreurs les unes apres les autres ?

en plus je dois mettre ces valeurs récupérées dans un fichier xml mais mes balises d'en tête sont mauvaises :

document.setXmlVersion("1.0");
document.setXmlStandalone(true);

Element racine = document.createElement("xml");

racine.appendChild(document.createComment("placer commentaire ici"));

Element resultat = document.createElement("resultat");
racine.appendChild(resultat);

Element errors = document.createElement("errors");
errors.getAttribute(e);
errors.setTextContent(e);
racine.appendChild(errors);

document.appendChild(racine);

// ====================== nom du fichier de sortie
// ==================================

transformerXml(document, "./Test_Bo_doc_html.xml");
} catch (Exception e) {
e.printStackTrace();
}

je voudrais juste constituer le fichier xml correctement

<xml
<title
<head
<body
apres j'indente mes balises erreurs et fichier source
pour enfin cloturer mes balises.

d'avance merci pour votre aide
SanguiniusBo
Messages postés
2
Date d'inscription
mercredi 9 juin 2010
Statut
Membre
Dernière intervention
9 juin 2010

salut à tous !
je dois coder un prog qui lit un fichier txt et qui doit recuperer certaines infos(erreurs) en fonction du debut de ligne.
le probleme que je rencontre c'est que un même fichier comprends plusieurs lignes commençant par "erreur" et que mon prog ne recupere que la premiere ligne mais ne me renvoie pas les suivantes...

while ((ligne = lecteurAvecBuffer.readLine()) != null) {

ligne = ligne.trim();
int flagMultiMessage = 0;

if (ligne.startsWith("* Errors :")) { // liste d'erreurs

e = ligne.substring(18, 24);
e1 = ligne.substring(53);

continue;

} catch (IOException e1) {

e1.printStackTrace();
}

try {

lecteurAvecBuffer.close();

} catch (IOException e) {

e.printStackTrace();
}
}

}
bob5eq
Messages postés
2
Date d'inscription
lundi 13 novembre 2006
Statut
Membre
Dernière intervention
9 janvier 2009

je trouve ce site important merci
saadTsdi
Messages postés
1
Date d'inscription
dimanche 11 novembre 2007
Statut
Membre
Dernière intervention
16 mars 2008

je trouve que ce site est le plus performant pour la programmation
merci

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.