Bonjour

J'ai créé un petit programme en Java qui converti un fichier XML en PDF ou en RTF (en dépendant du fichier XSL passé en paramètre).

Voici le code:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
	ByteArrayOutputStream foOut = new ByteArrayOutputStream();  
        File xmlFile = new File("c:/ws_rtf.xml");  
        File xsdFile = new File("D:/schema.xsd");  
                //File xsltFile = new File("d:/rtf_xsl.xsl");  
        File xsltFile = new File("d:/xsl_pdf.xsl");  
 
        SchemaAwareConfiguration conf = new SchemaAwareConfiguration();  
        conf.addSchemaSource(new StreamSource(xsdFile));  
 
        SchemaAwareTransformerFactory tFactoryXML2FO =   
            new SchemaAwareTransformerFactory(conf);  
 
        StreamSource streamSource = new StreamSource(xsltFile);  
long dt = System.currentTimeMillis();  
        Transformer foTrans = tFactoryXML2FO.newTransformer(streamSource); (***)  
System.out.println("=> " + (System.currentTimeMillis() - dt));  
 
        StreamSource strSourceXML = new StreamSource(xmlFile);  
        foTrans.transform(strSourceXML, new StreamResult(foOut));  
        foOut.flush();
Tout marche bien mais j'ai un petit problème niveau performance.

Quand je choisi le fichier XSL pour générer un PDF, la ligne (***) prend 700 milisecondes à être exécutée.
Hors, lorsque que choisi le fichier XSL pour générer un RTF, la ligne (***) 7 secondes à être exécutée (soit 10 fois plus plus ou moins).

Le fichier XSL pour générer un PDF possède 700 lignes et occupe 395Kb.

Au contraire, le fichier XSL pour générer un RTF possède 10000 lignes et occupe 818Kb.

Est-ce que la différence de taille des 2 fichiers est la cause de cette grande différence du temps d'exécution?

Pourquoi est-ce la ligne (***) prend-t-elle beaucoup plus de temps à être exécutée lorsque le programme génère un RTF?

Comment résoudre le problème?

Merci
Cordialement