Bonjour à tous,

Dans le cadre du projet sur lequel je travaille nous avons un besoin bien particulier.
Nous avons un objet JAXB que nous souhaitons proposer au téléchargement sous forme de flux XML "non lisible" par l'utilisateur qui télécharge ce fichier.
L'idée est donc de convertir le fichier XML généré en fichier binaire.

Le problème est le suivant : je n'ai pas trouvé de méthode pour "convertir" en binaire un flux XML.

Voici le genre de choses que j'ai essayé :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
//Objet métier 'JAXBifié'
final DAT Dat = oFactory.createDAT();
//...Quelques traitements
//Et puis le traitement xmlToFile et la tentative de conversion 
final ParserDat myParser = new ParserDat();
final StringWriter w = new StringWriter();
final StringOutputStream fops = new StringOutputStream(w);
myParser.xmlToFile(Dat, fops);
System.out.print(w.getBuffer());final FileOutputStream fos = new FileOutputStream(new File("c:/myDev/toto"));
final DataOutputStream dos = new DataOutputStream(fos);
dos.write(w.getBuffer().toString().getBytes());
dos.flush();
dos.close();
Mais dans le fichier généré "c:/myDev/toto" je me retrouve avec le doc XML "en clair"

Bref si vous avez une idée je suis preneur
Merci d'avance

Finalement j'ai fait ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
final ParserDat myParser = new ParserDat();
			final StringWriter w = new StringWriter();
			final StringOutputStream fops = new StringOutputStream(w);
			myParser.xmlToFile(Dat, fops);
			System.out.print(w.getBuffer());
 
			final FileOutputStream fos = new FileOutputStream(new File("c:/myDev/toto"));
			final DataOutputStream dos = new DataOutputStream(fos);
			// final BufferedOutputStream bos = new BufferedOutputStream(fos);
			// final ObjectOutputStream oos = new ObjectOutputStream(fos);
			final byte[] myTab = org.bouncycastle.util.encoders.Base64.encode(w.getBuffer().toString().getBytes());
			dos.write(myTab);
			dos.flush();
			dos.close();