OVH Cloud OVH Cloud

Ressortir des informations dans un fichiers xml

3 réponses
Avatar
caralho27
Un programme a été ecrit qui permet de traduire un fichier xml en
fichier plat et vice versa cette Class fait partie d'une application
qui utilise de nombreuse Class. Cette personne arrive à afficher les
informations sur l'ecran mais on me demande de mettre ces info dans un
document xml. J'ai essayé differentes methode qui ont toutes echoué
d'où ma requete.
Voici le morceau de code. je n'ai pas les imports qui sont tous
presents.


Je desire afficher ce qu'il ya dans doc. De nombreuses méthode sont
propre a notre informatique et ne sont donc pas compris dans jdk mais
elles fonctionnent toutes parfaitement. Merci d'avance a+



public static void main(String[] args) throws Exception
{
try
{
// Initialisation du service de traduction
// (normalement realise par le ServicesManager du
concentrateur).
ServiceTraduction service = new ServiceTraduction();
service.init(ServiceTraduction.NAME,
System.getProperties());

// Fichier message CERP en entree de la traduction RvO.
String fichierCerp = (args.length == 1)? args[0]: args[1];

// Mode de test : RvO seul ou OvR + RvO ?
if (args.length > 1)
{
// Traduction OvR :
// 1.1. Parsing du fichier PharmaML en document JDOM.
Document doc = new SAXBuilder().build(args[0]);

// 1.2. Recuperation d'un traducteur OvR
String typeCorps = (args.length > 2)? args[2]:
"COMMANDE";
TraducteurOvR ovr = service.newTraducteurOvR(
doc, // Document
PharmaML
typeCorps, // Type de
corps
"SE"); // Code agence

// 1.3. Ouverture du fichier message CERP en mode
ecriture.
Writer os = new BufferedWriter(new
FileWriter(fichierCerp));

// 1.4. Ecriture de l'entete de message CERP.
os.write(ovr.getEnteteMessage());

// 1.5. Ecriture des enregistrements.
String data = null;
while ((data = ovr.getEnregistrementSuivant()) !=
null)
{
os.write(data);
}

// 1.6. Fermeture du fichier plat CERP.
os.flush();
os.close();
}
// Else: Mode RvO seul.

// Traduction RvO :
// 2.1. Ouverture du fichier message CERP en lecteur
seule.
Reader msgCerp = new FileReader(fichierCerp);

// 2.2. Recuperation d'un traducteur RvO.
TraducteurRvO rvo = service.newTraducteurRvO(msgCerp);

// 2.3. Generation du document PharmaML.
Document doc = rvo.getDocument();
//DOCUMENT DOC A RESSORTIR
// 1.3. Ouverture du fichier message CERP en mode ecriture.




// 2.4. Impression du document PharmaML sur la console.
new XMLOutputter(" ", true).output(doc,System.out);
//A L'AIDE DE CETTE METHODE IL AFFICHE DOC A L'ECRAN
}
catch (Exception e)
{
e.printStackTrace();
}
}

}

3 réponses

Avatar
Vincent Brabant
Un programme a été ecrit qui permet de traduire un fichier xml en
fichier plat et vice versa cette Class fait partie d'une application
qui utilise de nombreuse Class. Cette personne arrive à afficher les
informations sur l'ecran mais on me demande de mettre ces info dans un
document xml. J'ai essayé differentes methode qui ont toutes echoué
d'où ma requete.
Voici le morceau de code. je n'ai pas les imports qui sont tous
presents.


Je desire afficher ce qu'il ya dans doc. De nombreuses méthode sont
propre a notre informatique et ne sont donc pas compris dans jdk mais
elles fonctionnent toutes parfaitement. Merci d'avance a+



public static void main(String[] args) throws Exception
{
try
{
// Initialisation du service de traduction
// (normalement realise par le ServicesManager du
concentrateur).
ServiceTraduction service = new ServiceTraduction();
service.init(ServiceTraduction.NAME,
System.getProperties());

// Fichier message CERP en entree de la traduction RvO.
String fichierCerp = (args.length == 1)? args[0]: args[1];

// Mode de test : RvO seul ou OvR + RvO ?
if (args.length > 1)
{
// Traduction OvR :
// 1.1. Parsing du fichier PharmaML en document JDOM.
Document doc = new SAXBuilder().build(args[0]);

// 1.2. Recuperation d'un traducteur OvR
String typeCorps = (args.length > 2)? args[2]:
"COMMANDE";
TraducteurOvR ovr = service.newTraducteurOvR(
doc, // Document
PharmaML
typeCorps, // Type de
corps
"SE"); // Code agence

// 1.3. Ouverture du fichier message CERP en mode
ecriture.
Writer os = new BufferedWriter(new
FileWriter(fichierCerp));

// 1.4. Ecriture de l'entete de message CERP.
os.write(ovr.getEnteteMessage());

// 1.5. Ecriture des enregistrements.
String data = null;
while ((data = ovr.getEnregistrementSuivant()) ! > null)
{
os.write(data);
}

// 1.6. Fermeture du fichier plat CERP.
os.flush();
os.close();
}
// Else: Mode RvO seul.

// Traduction RvO :
// 2.1. Ouverture du fichier message CERP en lecteur
seule.
Reader msgCerp = new FileReader(fichierCerp);

// 2.2. Recuperation d'un traducteur RvO.
TraducteurRvO rvo = service.newTraducteurRvO(msgCerp);

// 2.3. Generation du document PharmaML.
Document doc = rvo.getDocument();
//DOCUMENT DOC A RESSORTIR
// 1.3. Ouverture du fichier message CERP en mode ecriture.




// 2.4. Impression du document PharmaML sur la console.
new XMLOutputter(" ", true).output(doc,System.out);
//A L'AIDE DE CETTE METHODE IL AFFICHE DOC A L'ECRAN
}
catch (Exception e)
{
e.printStackTrace();
}
}

}


Dans la fameuse ligne
new XMLOutputter(" ", true).output(doc,System.out);
il y a une référence à System.out, qui est la console.
System.out est un objet de type PrintStream.
Il te suffit de le remplacer par un autre objet de type PrintStream pointant lui vers un fichier.
Cela devrait être quelque chose du style:

File file = new File("c:toto.out");
PrintStream output = new PrintStream(new BufferedOutputStream(new FileOutputStream(file)));
new XMLOutputter(" ", true).output(doc,output);

Tout cela avec les bon try catch, les closes, et tout ça.

Bonne chance.

--
Vincent Brabant
----------------
http://www.netbeans.org/index_fr.html
http://vbrabant-fr.skynetblogs.be

Avatar
caralho27
Je te remercie sa marche parfaitement. A+
Avatar
caralho27
Je te remercie sa marche parfaitement. A+