Premature end of file

z3rG

Mitglied
Hi Leute! Weiß nicht warum der Error kommt.
Java:
package de.Work.Times.Calculator.Handler;

import java.io.File;
import java.io.IOException;
import java.util.List;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document;
import org.w3c.dom.Element;

import de.Work.Times.Calculator.Interface.IExportInterface;
import de.Work.Times.Calculator.Logic.StringFormater;
import de.Work.Times.Calculator.Model.WorkDay;

public class DomXmlHandler implements IExportInterface {

	StringFormater strFormater = new StringFormater();

	@Override
	public void exportWorktimes(List<WorkDay> workDayList) throws Exception {

		File xmlFile = new File("worktimesDom.xml");

		DocumentBuilderFactory docBuildFactory = DocumentBuilderFactory
				.newInstance();
		DocumentBuilder docBuilder = docBuildFactory.newDocumentBuilder();
		Document document = docBuilder.parse(xmlFile);
		document.getDocumentElement().normalize();

		Element workTime = document.createElement("worktime");
		document.appendChild(workTime);

		for (int i = 0; i < workDayList.size(); i++) {

			strFormater.formatDateToString(workDayList);

			Element date = document.createElement("date");
			date.setAttribute("today", strFormater.getDate());

			Element checkIn = document.createElement("checkin_time");
			checkIn.appendChild(document.createTextNode(strFormater
					.getCheckIn()));
			date.appendChild(checkIn);

			Element checkOut = document.createElement("checkout_time");
			checkOut.appendChild(document.createTextNode(strFormater
					.getCheckOut()));
			date.appendChild(checkOut);

			Element pauseStart = document.createElement("pause_start");
			pauseStart.appendChild(document.createTextNode(strFormater
					.getPauseStart()));
			date.appendChild(pauseStart);

			Element pauseEnd = document.createElement("pause_end");
			pauseEnd.appendChild(document.createTextNode(strFormater
					.getPauseEnd()));
			date.appendChild(pauseEnd);

			Element fullWork = document.createElement("worked_on_this_day");
			fullWork.appendChild(document.createTextNode(strFormater
					.getFullWork()));
			date.appendChild(fullWork);

			workTime.appendChild(date);

			TransformerFactory transformerFactory = TransformerFactory
					.newInstance();
			Transformer transformer = transformerFactory.newTransformer();
			DOMSource source = new DOMSource(document);
			StreamResult result = new StreamResult(
					new File("worktimesDom.xml"));
			transformer.transform(source, result);

		}
	}

	@Override
	public void importWorktimes(List<WorkDay> workDayList) throws IOException {
		// TODO Auto-generated method stub

	}

}
Danke für die Antworten 🙂
 
Das ist natürlich für niemanden nachvollziehbar.

Poste mal den Stacktrace und die XML Datei.

Markiere die Quelle der Exception in deinen Code oder poste die Zeile auch nochmal.
 
Also ich bin ein richtiger Newbie und weiß ehrlich gesagt nicht, was du meinst. Meine xml soll ja durch den Dom erst erstellt werden. Meine Xml ist leer und soll ja erst beschrieben werden.
Ist lediglich [XML]<?xml version="1.0" encoding="UTF-8" standalone="yes"?>[/XML]
Das ist der Fehler:
Java:
[Fatal Error] worktimesDom.xml:1:56: Premature end of file.
Errororg.xml.sax.SAXParseException: Premature end of file.
 
Vielleicht sollte ich das auch noch erwähnen:
Java:
[Fatal Error] worktimesDom.xml:1:56: Premature end of file.
org.xml.sax.SAXParseException: Premature end of file.
	at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:246)
	at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:284)
	at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:180)
	at de.Work.Times.Calculator.Handler.DomXmlHandler.exportWorktimes(DomXmlHandler.java:38)
	at de.Work.Times.Calculator.Gui.Gui$7.actionPerformed(Gui.java:248)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2028)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2351)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
	at javax.swing.AbstractButton.doClick(AbstractButton.java:389)
	at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:809)
	at com.apple.laf.AquaMenuItemUI.doClick(AquaMenuItemUI.java:137)
	at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:850)
	at java.awt.Component.processMouseEvent(Component.java:6375)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
	at java.awt.Component.processEvent(Component.java:6140)
	at java.awt.Container.processEvent(Container.java:2083)
	at java.awt.Component.dispatchEventImpl(Component.java:4737)
	at java.awt.Container.dispatchEventImpl(Container.java:2141)
	at java.awt.Component.dispatchEvent(Component.java:4565)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4619)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4280)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4210)
	at java.awt.Container.dispatchEventImpl(Container.java:2127)
	at java.awt.Window.dispatchEventImpl(Window.java:2482)
	at java.awt.Component.dispatchEvent(Component.java:4565)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:684)
	at java.awt.EventQueue.access$000(EventQueue.java:85)
	at java.awt.EventQueue$1.run(EventQueue.java:643)
	at java.awt.EventQueue$1.run(EventQueue.java:641)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
	at java.awt.EventQueue$2.run(EventQueue.java:657)
	at java.awt.EventQueue$2.run(EventQueue.java:655)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:654)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
 
Also so ganz verstehe ich Deinen Code nicht.

Java:
DocumentBuilder docBuilder = docBuildFactory.newDocumentBuilder();
Document document = docBuilder.parse(xmlFile);
document.getDocumentElement().normalize();

Wie bereits erwähnt wurde, möchtest Du eine Datei parsen, die aber leer ist und daher überhaupt kein gültiges XML-Dokument enthält?

Nimm die Zeilen doch mal raus und sehe nach, ob Dir die erzeugte Datei gefällt oder nicht. Ich habe mal zum Test die Zeile durch diese ersetzt und gesehen das da zumindest ohne Fehlermeldung eine XML-Datei rauskommt. (Ich muss erwähnen, das ich den Code noch ändern musste, weil da Klassen benutzt werden, die ich nicht habe und zu faul war eine ganze Liste von Work-Einträgen zu erzeugen)

Java:
		DocumentBuilder docBuilder = docBuildFactory.newDocumentBuilder();
		Document document = docBuilder.newDocument();
 
Zuletzt bearbeitet:

Zurück
Oben