Bonjour,
Avant tout, je suis en JDK 1.1.8, et je ne peux pas la mettre à jour.
Je pourrais peut-etre passer aux maximum en 1.2.2,
mais ce n'est pas sur du tout.
En entree :
J'ai un ResulSet qui contient un document XML pouvant aller jusqu'a 2Mo dans certains cas.
(Pour avoir une idee plus claire, lorsque je finis de lire mon ResultSet
et que je l'affiche à l'ecran, j'ai le contenu d'un fichier XML avec
les balises et les données...)
En sortie : je dois avoir l'XML transformé en HTML grace a XSLT
-------------------------------------------------------------------------------
Ca marche, mais c'est long....et je ne sais pas ce qui prend le plus de temps. (Mon prog est une Servlet)
Le code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| PrintWriter out = res.getWriter();
.....
ResultSetMetaData rsmd = rsCli.getMetaData();
int numCols = rsmd.getColumnCount();
String xml= "";
while ( rsCli.next())
{
for(int i = 1; i <= numCols; i++)
{
xml +=rsCli.getString(i);
}
}
ByteArrayInputStream reader = new ByteArrayInputStream(xml.getBytes());
XSLTProcessor processor2 = XSLTProcessorFactory.getProcessor();
processor2.process(new XSLTInputSource(reader),
new XSLTInputSource("testxsl1.xsl"),
new XSLTResultTarget(out)); |
Lors de la lecture du resulset (je recupere du String ),je concatene les champs dans un String.
A la fin,j'ai un String qui contient le fichier XML.
Afin de transformer le XML en HTML, j'utilise la classe XSLTProcessor, de l'api Xalan...version....1.0 ! ! ! Et oui ça date.
1 2 3 4
| XSLTProcessor prc = XSLTProcessorFactory.getProcessor();
prc.process(new XSLTInputSource(reader),
new XSLTInputSource("urldeXLST"),
new XSLTResultTarget(out)); |
XSLTInputSource peut recevoir en entrée soit le chemin du fichier XML,
soit un Reader, soit un InputSream.
http://e-docs.bea.com/wls/docs61/Xal...putSource.html
Donc j'ai converti le String XML en ByteArrayInputStream ,
et je l'ai passe en argument à XSLTInputSource.
ByteArrayInputStream reader = new ByteArrayInputStream(xml.getBytes());
Tout en gardant le meme deroulement assez barbare,
quel est le moyen le plus rapide pour passer le ResultSet
en argument du constructeur XSLTInputSource ?
Y-a t'il une solution pour transformer directement
le ResultSet en Reader ou InputStream ?
Merci, ++
Partager