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
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.