Portal > Foren > Java > Allgemeine Java-Programmierung > Writer-problem Bei Xsl-transformation
Antwort
 
Themen-Optionen Thema durchsuchen
Alt 12.02.2008, 16:06 Nach oben    #1
Neuer Benutzer
 
Registriert seit: 12.02.2008
Beiträge: 2
Standard Writer-problem Bei Xsl-transformation

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");
}
ich hoffe der hilft jemanden weiter. Also jetzt zu meinem Problem.

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.
Junktyz ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.02.2008, 16:52 Nach oben    #2
Projektleiter
 
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.110
Standard

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());
Wobei du das vielleicht lieber über nen wrapper (PrintStream oder so) machen möchtest, statt da mit toByteArray rumzuhampeln.
pago ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.02.2008, 17:19 Nach oben    #3
Neuer Benutzer
 
Registriert seit: 12.02.2008
Beiträge: 2
Standard

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.
Junktyz ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.02.2008, 20:17 Nach oben    #4
Projektleiter
 
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.110
Standard

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...
pago ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Ä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


Alle Zeitangaben in WEZ +2. Es ist jetzt 20:30 Uhr.


Powered by vBulletin® Version 3.7.3 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44