19. april 2002 - 17:42Der er
4 kommentarer og 1 løsning
kan en StreamResult bruges til en StreamSource ? (nej)
Jeg har et javaprogram, der skal lave et udtræk fra databasen, transformere det til xml, og derefter transformere det til html via en xsl fil.
Mit problem går ud på, at den første transformation producerer en OutputStream, og den kan jeg ikke finde ud af at bruge som input til den næste transformation. Se nedenstående kode: (objektet writer er af type OutputStream og objeket a er bare et objekt, der anvendes til databaseudtrækket)
Har I nogen gode tips eller forslag til andre strategier ? pft Anne
// lav udtræk og få resultatet i en OutputStream // det er formatteret som xml dbUdtr= new DbUdtraek(writer, a); dbUdtr.run();
//læg outputtet i en StreamResult StreamResult tempResult = new StreamResult(writer);
// kan man ikke - inkompatible, compileren svarer: // found : javax.xml.transform.stream.StreamResult // required: javax.xml.transform.stream.StreamSource // men hvad gør man så istedet? StreamSource tempSource = tempResult;
//transformer xml'en til html via xsl'en stylesource StreamResult result = new StreamResult(writer); transformer.transform(tempSource, result);
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
Du kan ikke læse fra en OutputStream, den er til at skrive i, hvis det ikke er en du selv har oprettet så prøv med System.out.println (writer.getClass()); efter du har lavet dbudtrækket og fortæl hvilken klasse det er.
Hvis det er en FileOutputStream så må du lukke den og oprette en ny StreamSource med filen. StreamSource tempSource = new StreamSource(filnavn); istedet for StreamSource tempSource = tempResult
Hej codemon, Jeg fik det til at virke på nedenstående måde ved at bruge PipedInputStream og PipedOutputStream (og åbne en ny StreamSource, som du foreslog)
// Udtraekket - streames direkte igennem xslt scriptet ... //div. variable StreamSource styleSource = new StreamSource(new File("myXsl.xsl")); TransformerFactory tFactory = TransformerFactory.newInstance(); Transformer transformer = tFactory.newTransformer(styleSource); PipedInputStream in = new PipedInputStream(); PipedOutputStream out = new PipedOutputStream(in);
// lav udtræk og få resultatet i en PipedOutputStream // start det i en ny tråd Udtraek udtr = new Udtraek(out,a); new Thread(udtr).start();
//læg outputtet i en StreamResult StreamResult result = new StreamResult(writer); // det kan man godt !
//transformer xml'en til html via xsl'en stylesource transformer.transform(new StreamSource(in), result);
amoelle der var en smart lille løsning du fandt der. Jeg skal ikke have nogle point, jeg hjalp jo ikke det mindste. (til gengæld står jeg lige nu og kan bruge din løsning i en lidt anden sammenhæng)
Tak til codemon for at kommentere. Det triggede udarbejdelsen af den endelige løsning
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.