# Beim Serialisieren fehlt die letzte Zeile



## rhilge (6. Dez 2018)

Hallo,

wenn ich den XMLEncoder benutze, wird die XML zwar ertellt, aber es fehlt immer die letzte Zeile im XML Dokument. Konkret das "</java>". Hat jemand eine Idee woran das liegen kann, ohne dass ich den ganzen Code hier reinstellen muss?


----------



## httpdigest (6. Dez 2018)

Eventuell wird in dem XMLEncoder oder einem zwischenliegenden Stream gepuffert. *Schon XMLEncoder.close() aufgerufen?* Ansonsten: Wo lässt du den Output denn hinschreiben? In eine Datei? Und wie stellst du ganz genau fest, dass die letzte Zeile fehlt?


----------



## rhilge (6. Dez 2018)

Also ich mache zunächst:

```
fileOutputStreamPlay = new FileOutputStream("playlist.xml");
        encoderPlay = new XMLEncoder(fileOutputStreamPlay);
```

Dann kommt

```
encoderPlay.writeObject(p);
encoderPlay.flush();
```


```
try{
            fileOutputStreamPlay.close();
            encoderPlay.close();
        }catch (IOException ex){
            ex.printStackTrace();
        }
```

Mich wundert, dass es immer die letzte Zeile ist, die fehlt.


----------



## httpdigest (6. Dez 2018)

Das Problem ist, dass du zuerst den fileOutputStream schließt und somit der encoderPlay.close() keine Chance mehr hat, das Postamble (siehe referenzierten JavaDoc) zu schreiben.
JavaDoc von close(): "This method calls flush, *writes the closing postamble* and then closes the output stream associated with this stream."


----------



## rhilge (6. Dez 2018)

WEnn ich die Zeile manuell hinzufüge, klappt auch das laden der xml also scheint diese ansonsten korrekt zu sein


----------



## rhilge (6. Dez 2018)

Man bist Du schnell. Hat Funktioniert. Vielen Dank!


----------

