Premature end of file: Mit DOM erstellte XML via S

Hallo zusammen,

ich habe in Java per DOM XML erstellt und diese per FileWriter in eine Datei geschrieben (UTF-8 ohne BOM):

DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
Document document = documentBuilder.newDocument();
Element rootElement = document.createElement(„PACKAGE“);
rootElement.setAttribute(„NAME“, packageName);
rootElement.setAttribute(„DESCRIPTION“, description);
document.appendChild(rootElement);

Die Datei sieht gut aus, ich habe mir auch die versteckten Zeichen angesehen, alles soweit prima.

Wenn ich jetzt versuche, die Datei via SAX einzulesen, bekomme ich die Fehlermeldung „Premature end of file“… Weiß jemand zufällig, was gemeint sein soll?

DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
Document doc = docBuilder.parse(fis);

keine Ahnung in wie weit das dir hilft, ich habe das hier gefunden.

1.
That is a common problem when the contents of the xml file were written by your program using a PrintWriter or something similar and you forgot to call flush(). If that is the case, then make sure that you invoke the flush() method after you are done writing to the xml file to ensure everything in the buffer gets into the file.

also du musst sicherstellen, das beim schreiben wirklich alles geschrieben wird.

2.
Problem: Input stream is opened and read bytes from it, passed the same to document builder to parse method. so it caused the exception saying premature end of file.

Solution: Pass fresh input stream which is opened and not read anything (bytes) before passing to parse method of DocumentBuilder object.

du musst für das Einlesen einen „frischen“ InputStream benutzen. Entweder du machst ein Reset oder mit „new“ holst du dir einen neuen InputStream

Weiter Möglichkeiten
„Premature end of file“ bedeutet das ein oder mehrere Tags nicht korrekt geschlossen wurden. Wenn du das File öffnest und alles OK ist, kann es sein das nicht druckbare Zeichen im Dokument sind. Mal mit einem richtigen Editor (notepad++, vi, gEdit oder ähnliches) das File öffnen.

Ein Tip:
Beim erstellen und beim einlesen das Ganze gegen ein Schema validieren lassen. Das hilft immer um Systax-Probleme auszuschließen. So das nur noch Betriebs- und Filesystem übrig bleiben.