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

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

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.