Recuperer le resultat d'une tranformation xslt dans un string

Recuperer le resultat d'une tranformation xslt dans un string - Java - Programmation

Marsh Posté le 11-10-2007 à 18:47:54    

Bonsoir à tous,
 
mon problème est super simple. Je veux juste faire une transformation (en java) xsl + xml => xml mais tout en mémoire. J'ai beau chercher je ne trouve pas exactement ce qu'il me faut sur le net.
 
En gros la, j'envoie en string le contenu de mon fichier xsl, le contenu de mon fichier xmlsource en byte[] et je tente de récupérer tout ça en ByteArrayOutputStream . Mais ça ne me dérange pas de tout faire en string (envoyer le contenu du fichier xsl et xml en string et recupérer le contenu de mon nouveau xml en string. Avez une solution svp?
 
Voici mon code:
private ByteArrayOutputStream getXmlFormatTAB(String inputXslFileNameXMLtoXML,byte[] xmlSource)
 {
  TransformerFactory factory = TransformerFactory.newInstance();
   
  ClassLoader loader = PDFGenerator.class.getClassLoader();
  InputStream xsltInputStream = loader.getResourceAsStream("WEB-INF/"
    + inputXslFileNameXMLtoXML);
  InputStream xmlInputStream = loader.getResourceAsStream("WEB-INF/"
    + inputXslFileNameXMLtoXML);
  Result resultat = null;
   
  ByteArrayOutputStream out = new java.io.ByteArrayOutputStream();
  try {
   // définit l'entrée XSLT
   _transformerXMLtoXML = factory.newTransformer(new StreamSource(
     xsltInputStream));
   
   // Set the value of a <param> in the stylesheet
   _transformerXMLtoXML.setParameter("versionParam", "2.0" );
   // Set the value of a <param> in the stylesheet
   _transformerXMLtoXML.setParameter("versionParam", "2.0" );
   
   // La source est le fichier xml
   InputStream input_l = new ByteArrayInputStream(xmlSource);
   Source src = new StreamSource(input_l);
   
   // Déclaration du resultat
   resultat = new StreamResult(out);
 
   _transformerXMLtoXML.transform(src, resultat);
  }
  catch (Exception e) {
   e.printStackTrace();
  }
  return out;
 }
 
 
Merci d'avance à vous tous,
 
Vdm

Reply

Marsh Posté le 11-10-2007 à 18:47:54   

Reply

Marsh Posté le 17-10-2007 à 11:09:12    

Bonjour,
je ne sais pas si ça peut t'aider mais voilà ce que j'utilise :
 
/** Creates a new instance of XSLTransform
   * @param xml_url xml file to explore
   * @param xslIS xsl use to transform (coming from an InputStream)
   * the result is store in String[][] tabRes
   */
  public XSLTransform(String xml_url, InputStream xslIS) throws Exception {
     
    TransformerFactory tfactory = TransformerFactory.newInstance();
     
    try {  
      InputStream xmlStream = new FileInputStream( xml_url );
      StreamSource xmlSource = new StreamSource( xmlStream );
       
      StreamSource xslSource = new StreamSource( xslIS );
      Templates templates = tfactory.newTemplates( xslSource );
      Transformer transformer = templates.newTransformer();
       
      StringWriter sos = new StringWriter();
      StreamResult out = new StreamResult( sos );
       
      transformer.transform( xmlSource, out );
       
      sos.close();
       
      result = sos.toString();
       
      /*System.out.println( sos.toString() );*/
    }
    catch ( IOException ex ) {
      throw new Exception("XSLTransform on file " + xml_url + " : \n" + ex.toString());
    }

Reply

Marsh Posté le 26-10-2007 à 15:18:04    

Merci de votre aide,
 
je poste le code que j'utilise et qui fonctionne:
 
private ByteArrayOutputStream getXmlFormatTAB(String inputXslFileNameXMLtoXML,byte[] xmlSource)
 {
  TransformerFactory factory = TransformerFactory.newInstance();
   
  ClassLoader loader = PDFGenerator.class.getClassLoader();
  InputStream xsltInputStream = loader.getResourceAsStream("WEB-INF/"
    + inputXslFileNameXMLtoXML);
  Result resultat = null;
   
  ByteArrayOutputStream out = new java.io.ByteArrayOutputStream();
  try {
   // définit l'entrée XSLT
   _transformerXMLtoXML = factory.newTransformer(new StreamSource(
     xsltInputStream));
   
   // Set the value of a <param> in the stylesheet
   _transformerXMLtoXML.setParameter("versionParam", "2.0" );
   // Set the value of a <param> in the stylesheet
   _transformerXMLtoXML.setParameter("versionParam", "2.0" );
   
   // La source est le fichier xml
   InputStream input_l = new ByteArrayInputStream(xmlSource);
   Source src = new StreamSource(input_l);
   
   // Déclaration du resultat
   resultat = new StreamResult(out);
   
   // TODO: créer ici un objet qui fasse la relation entre le out et le resultat.
   _transformerXMLtoXML.transform(src, resultat);
  }
  catch (Exception e) {
   e.printStackTrace();
  }
  finally {
   if (out != null) {
    try {
     out.close();
    } catch (IOException e) {
     e.printStackTrace();
    }
   }
   return out;
  }
 }
 
Merci ++

Reply

Marsh Posté le 26-10-2007 à 16:18:56    

note pour plus tard : les balises [ code=java ] ... [ code ] , c'est le bien


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed