XML Unicode Problem

  • Themenstarter Themenstarter mosk
  • Beginndatum Beginndatum
M

mosk

Gast
Hallo liebes Javaforum,

folgendes Problem:

Angenommen ich habe folgende XML Datei
Java:
<?xml version="1.0" encoding="UTF-8"?>
<node1>
	<node2>
		<name>test1</name>
		<node3>/</node3>
	</node2>
	<node2>
		<name>test2</name>
		<node3>/</node3>
	</node2>
</node1>

Jetzt habe ich ein Javaprogramm, welches mit von jeder node2 eine eigene Datei erzeugt und halt node2 inklusive Kinder in diese neu erzeugte Datei schreibt. Problem: der Inhalt aus node3 ist nicht mehr "/" sondern "\" (decodiert)!

Hier ist mein java-Code:

Java:
    private void debug() throws Exception {
        /*** Delete all existing .xml files: ***/
        deleteDirectory(path);
        
        SAXBuilder builder = new SAXBuilder();
        InputStream is = new FileInputStream(input);
        InputStreamReader isr = new InputStreamReader(is, "UTF-8");
        Reader in = new BufferedReader(isr);

        Document doc = builder.build(isr);

        //create a List containing all transformations
        Element elRoot = doc.getRootElement();
        listOfAllTransformations = elRoot.getChildren("node2");

        
        for (Element e : listOfAllTransformations) {
            String transName = e.getChild("name").getText();
            String transPath = e.getChild("node3").getText().equals("/") ? "" : e.getChild("node3").getText();
            System.out.println("node3: "+e.getChild("node3").getText());
            //create directories
            tmpTransformationPath = new File(path.getAbsolutePath() + transPath);
            tmpTransformationPath.mkdirs();

            //create xml file
            Element newRoot = (Element) e.clone();
            tmpTransformationDoc = new Document(newRoot);
            try {
                FileOutputStream fos = new FileOutputStream(path.getAbsolutePath() + transPath + "/" + transName + ".xml");
                Writer out = new OutputStreamWriter(fos, "UTF-8");
                XMLOutputter outputter = new XMLOutputter(Format.getPrettyFormat().setEncoding("UTF-8"));
                outputter.output(tmpTransformationDoc, out);
                fos.flush();
                fos.close();
            } catch (java.io.IOException exe) {
                exe.printStackTrace();
            }
        }
    }

Hat jemand eine Idee, woran das liegen kann? Vielen Dank im Voraus.
 
da ich nicht editieren kann, hier vllt noch gut zu wissen meine imports (benutze jDom):
Java:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.Writer;
import java.util.List;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
import org.jdom.Document;
import org.jdom.output.XMLOutputter;
import org.jdom.output.Format;
Die Variaben path (wo die neu erzeugten Dateien gespeichert werden sollen) und input (die "große" xml file) sind vom Typ File.
 

Neue Themen


Zurück
Oben