![]() |
|
|
Themen-Optionen |
|
|
Nach oben #1 |
|
Neuer Benutzer
Registriert seit: 12.02.2008
Beiträge: 2
|
Hallo,
ich habe ein Problem mit einem Codefragment. Ich möchte eine XSL-Transformation machen und mache das mit folgendem Code. Code:
try {
// The XSLT Stylesheet is null if there is no one specified.
// In this case the Output must not be transformed.
if(xsltSource != null) {
Source xmlSource = null;
if( writer instanceof StringWriter) {
xmlSource = new StreamSource( new StringReader(writer.toString()) );
}
// Write the Result into the writer. outs is an OutputStream
writer= new OutputStreamWriter(outs);
StreamResult transformedXmlResult = new StreamResult();
transformedXmlResult.setWriter( writer );
// Create a new instance of a TransformerFactory and create
// a special transformer with the given XSLT Stylesheet.
TransformerFactory transFact = TransformerFactory.newInstance();
Templates templates = transFact.newTemplates(xsltSource);
Transformer trans = templates.newTransformer();
// Perform the transformation.
trans.transform(xmlSource, transformedXmlResult);
} else {
//...
}
} catch (Throwable e) {
writer.write("Some text");
}
Also ich habe einen StringWriter mit Namen writer (dieser wird der Methode übergeben). Dort stehen die nicht transformierten xml-Daten drin. Aus diesem hol ich mir den String und mache daraus die Quelle xmlSource für den Transformer. Dann erstelle ich einen OutputStreamWriter, welcher in eine Datei schreibt. Dieser ist das Result transformedXmlResult des Transformers. Soweit so gut. Wenn ich gültige xml-Daten und ein gültiges Stylesheet habe, funktioniert auch alles wunderbar. Die transformierten Daten werden in den Writer geschrieben. Habe ich allerdings ein ungültiges Stylesheet, so wird in der Zeile "Templates templates = transFact.newTemplates(xsltSource);" eine Exception geworfen. Diese fange ich ab und möchte anstatt der transformierten Daten einen Warnhinweis schreiben ( writer.write("Some text"); ). Allerdings wird dieser Text nicht geschrieben, zumindest erscheint er nicht in der Datei. Weiß jemand auf Anhieb woran es liegen könnte. Ich blick da aktuell nicht durch. |
|
|
|
|
|
Nach oben #2 |
|
Projektleiter
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.083
|
Ist klar. Das, was im StringWriter steht, hast du ja auch schon längst verarbeitet. Wenn die Warnung in der Datei stehen soll, musst du sie eben in die Datei schreiben:
Code:
outs.write("Some text".toByteArray());
|
|
|
|
|
|
Nach oben #3 |
|
Neuer Benutzer
Registriert seit: 12.02.2008
Beiträge: 2
|
Ich erstelle ja einen neuen Writer (der dann kein StringWriter ist sondern ein OutputStreamWriter). Und alles was ich da im fehlerlosen Fall reinschreibe, ist ja auch richtig. Nur wenn die Excpetion geworfen wird, kann ich machen was ich will, es wird nichts mehr geeschrieben. Auch nicht mit outs.write... das hab ich schon versucht.
|
|
|
|
|
|
Nach oben #4 |
|
Projektleiter
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.083
|
Anstatt catch(Throwable e) { writer... } hast du also catch(Throwable e) { outs.write... } genommen?
Bei catch hast du selbstverständlich keinen Zugriff auf deinen neuen Writer mehr. Ist doch logisch. Übrigens ist's ne schlechte Idee, Throwable zu catchen. Exception ist das absolute Maximum, was du abfangen solltest... |
|
|
|
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Problem E-Mails zu senden | Jann Hendrik | Plauderecke | 7 | 25.05.2007 21:37 |
| [XSLT] Grundlegendes zur Nutzung von XSL als Template-Engine | El Barto | HTML, XML und CSS | 7 | 08.03.2007 19:09 |
| Problem mit LaTex (Facharbeit) | mouCe | Sonstige Programmiersprachen | 6 | 04.12.2006 00:13 |
| Problem mit Cookie und Reloads... | Bookworm | PHP-Programmierung | 10 | 13.04.2006 12:09 |
| OSX + Eclipse 3.1 Problem | bacarni | Eclipse | 3 | 29.07.2005 21:19 |