Bonjour,
je cherche à faire un programme qui crée un fichier xml avec DocumentBuilder Transformer, StreamResult et DOMSource. ce fichier doit ensuite être compréssé en zip et envoyé vers une base de donnée (donc le fichier reste sous forme de stream).

Voici la parti du code intéressante avant que je n'essaye de zipper :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer();
transformer.setOutputProperties(outFormat);
 
OutputStream output = new ByteArrayOutputStream();
 
 
DOMSource domSource = new DOMSource(document.getDocumentElement());
StreamResult result = new StreamResult(output);
transformer.transform(domSource, result);
 
Log.i("xml : ", output.toString());
Cela fonctionne et donne la sortie suivante dans le logcat :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
<?xml version="1.0" encoding="UTF-8"?><catalog journal="Oracle Magazine" publisher="Oracle Publishing">
  3680                  xml :  I  <article>
  3680                  xml :  I  <edition>Sept-Oct 2005</edition>
  3680                  xml :  I  <title>Creating Search Pages</title>
  3680                  xml :  I  <author>Steve Muench</author>
  3680                  xml :  I  </article>
  3680                  xml :  I  <article>
  3680                  xml :  I  <edition>November - December 2010</edition>
  3680                  xml :  I  <title>Agile Enterprise Architecture</title>
  3680                  xml :  I  <author>Bob Rhubart</author>
  3680                  xml :  I  </article>
  3680                  xml :  I  </catalog>
Maintenant avec le zip :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
TransformerFactory factory = TransformerFactory.newInstance();
transformer.setOutputProperties(outFormat);
 
OutputStream output = new ByteArrayOutputStream();
ZipOutputStream lZipOut = new ZipOutputStream(output);
 ZipEntry lEntry = new ZipEntry("content");
lZipOut.putNextEntry(lEntry);
 
DOMSource domSource = new DOMSource(document.getDocumentElement());
StreamResult result = new StreamResult(lZipOut);
transformer.transform(domSource, result);
 
Log.i("xml : ", output.toString());
La sortie donne ça quelque soit le xml : "PK½ï¿½ï¿½ï¿½ï����content"
C'est donc faux...
Comment dois-je faire pour zipper le stream dans mon cas? et comment vérifier que le zip obtenu est correct ?