xmlstring in xml format ausgeben lassen

Hi,

ich habe alles mit Interesse verfolgt und bin gerade mit einem ähnlichen Problem beschäftigt. Eine Lösung mittels JDOM entfällt, da die XML-Dateien recht groß sein können. So gesehen fand ich den Hinweis mit der Transformer sehr gut. Allerdings werden dabei keine Einrückungen vorgenommen, so wie ich mir das vorgestellt habe. In der folgenden Methode wird eine schon bestehende valide XML-Datei eingelesen und soll in einer formatierten ausgegeben werden.

Code:
    public boolean prettyPrint(String strFileIn, String strFileOut){
        boolean bReturn = false;
        
        try{
            
            File fileIn = new File(strFileIn);
            
            PrintWriter out = new PrintWriter(new OutputStreamWriter(new FileOutputStream(strFileOut),"UTF-8"));
            
            Transformer transformer = TransformerFactory.newInstance().newTransformer();
            transformer.setOutputProperty(OutputKeys.INDENT, "yes");
            transformer.setOutputProperty(OutputPropertiesFactory.S_KEY_INDENT_AMOUNT,"3");
            transformer.transform(new StreamSource(new FileInputStream(fileIn)), new StreamResult(out));

            bReturn = true;
            
        }
        catch (UnsupportedEncodingException e) {
            log.error(e.getMessage());
        }
        catch (FileNotFoundException e) {
            log.error(e.getMessage());
        }
        catch (TransformerConfigurationException e) {
            log.error(e.getMessage());
        }
        catch (TransformerFactoryConfigurationError e) {
            log.error(e.getMessage());
        }
        catch (TransformerException e) {
            log.error(e.getMessage());
        }

        return bReturn;
    }

Was mache ich hier falsch, dass keine Einrückungen in der Ausgabe erfolgen?
(Ein- und Ausgabedatei sind gleich, wenn ich das so verwenden.)

Tschau
Lutz
 
Hi,

ich habe alles mit Interesse verfolgt und bin gerade mit einem ähnlichen Problem beschäftigt. Eine Lösung mittels JDOM entfällt, da die XML-Dateien recht groß sein können. So gesehen fand ich den Hinweis mit der Transformer sehr gut. Allerdings werden dabei keine Einrückungen vorgenommen, so wie ich mir das vorgestellt habe. In der folgenden Methode wird eine schon bestehende valide XML-Datei eingelesen und soll in einer formatierten ausgegeben werden.

Code:
    public boolean prettyPrint(String strFileIn, String strFileOut){
        boolean bReturn = false;
        
        try{
            
            File fileIn = new File(strFileIn);
            
            PrintWriter out = new PrintWriter(new OutputStreamWriter(new FileOutputStream(strFileOut),"UTF-8"));
            
            Transformer transformer = TransformerFactory.newInstance().newTransformer();
            transformer.setOutputProperty(OutputKeys.INDENT, "yes");
            transformer.setOutputProperty(OutputPropertiesFactory.S_KEY_INDENT_AMOUNT,"3");
            transformer.transform(new StreamSource(new FileInputStream(fileIn)), new StreamResult(out));

            bReturn = true;
            
        }
        catch (UnsupportedEncodingException e) {
            log.error(e.getMessage());
        }
        catch (FileNotFoundException e) {
            log.error(e.getMessage());
        }
        catch (TransformerConfigurationException e) {
            log.error(e.getMessage());
        }
        catch (TransformerFactoryConfigurationError e) {
            log.error(e.getMessage());
        }
        catch (TransformerException e) {
            log.error(e.getMessage());
        }

        return bReturn;
    }

Was mache ich hier falsch, dass keine Einrückungen in der Ausgabe erfolgen?
(Ein- und Ausgabedatei sind gleich, wenn ich das so verwenden.)

Tschau
Lutz

Hatte das gleiche Problem. Bei mir lag es daran, dass ich mit Java 5 arbeitete.
 
Zurück