Fehlerhafte XML-Files verschieben

big_killa

Mitglied
Hallo,

ich schreibe grad ein JAVA-Programm, wo ich mehrere XML-Files entpacke, auslese und in die Datenbank schreibe. Ich hab das Problem, dass ich ein paar korrupte XML-Dateien habe. Diese will ich bei einem Fehler verschieben. Die Fehlermeldungen fange ich ab, und dass Programm setzt dann mit den anderen Dateien fort. Ich möchte aber die Fehlerhaften XML-Dateien vom Quellverzeichnis in ein Error Verzeichnis verschieben. Könnte mir da jemand behilflich sein `????
 
Zuletzt bearbeitet:
hi,

so mache ich das.

Code:
public static File renameFile(File fAlt, String directoryMoveTo) {
		if (fAlt == null || !fAlt.exists())
			return null;

		File file2 = new File(directoryMoveTo, fAlt.getName());
		if (file2.exists()) {
			file2.delete();
		}

		fAlt.renameTo(file2);
		if (fAlt.exists()) {
			fAlt.delete();
		}

		return file2;
	}
 
Wie kann ich die Dateien verschieben wenn ich diese Fehlermeldung hier bekomme???

org.xml.sax.SAXParseException; systemId: file:/C:/metin8y/LogFiles/temp/M_0CC6083564B3_20130128_145552.xml; lineNumber: 469; columnNumber: 1; XML-Dokumentstrukturen müssen innerhalb derselben Entität beginnen und enden.
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(Unknown Source)


Mein Code sieht folgendermaßen aus:

Java:
package routines;

import java.io.File;
import java.io.IOException;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;

import com.sun.xml.internal.bind.v2.model.core.ErrorHandler;
import com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationException;


public class MyRoutine {

	private String ausgabe;

	File file ;
	File output;
	
	public void xml(String filepath) {
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		factory.setValidating(false);
		factory.setNamespaceAware(true);

		file = new File(filepath);
		output = new File ("Error");
		DocumentBuilder builder;
		
		try {
			builder = factory.newDocumentBuilder();
			builder.setErrorHandler(new org.xml.sax.ErrorHandler() {

				@Override
				public void warning(SAXParseException e) throws SAXException {
					renameFile(file,"Error");
					System.err.println("XML FEHLER");
					e.printStackTrace();
					ausgabe = "XML FEHLER";
					
				}

				@Override
				public void fatalError(SAXParseException e) throws SAXException {
					renameFile(file,"Error");
					System.err.println("XML FEHLER");
					ausgabe = "XML FEHLER";
					e.printStackTrace();
				}

				@Override
				public void error(SAXParseException e) throws SAXException {
					renameFile(file,"Error");
					System.err.println("XML FEHLER");
					e.printStackTrace();
					ausgabe = "XML FEHLER";
				}
			});
			
			//file.renameTo(output);
			builder.parse(file);
			System.out.println("alles gut");
			ausgabe = "ALLES GUT";
			
		} catch (ParserConfigurationException e) {
			renameFile(file,"Error");
			System.err.println("XML FEHLER");
			e.printStackTrace();
			//file.renameTo(output);
			ausgabe = "XML FEHLER";
		} catch (SAXException e) {
			System.err.println("XML FEHLER");
			renameFile(file,"Error");
			e.printStackTrace();
			ausgabe = "XML FEHLER";
		} catch (IOException e) {
			System.err.println("XML FEHLER");
			renameFile(file,"Error");
			e.printStackTrace();
			ausgabe = "XML FEHLER";
		}
	}

	@Override
	public String toString() {
		return ausgabe;
	}
	public static File renameFile(File fAlt, String directoryMoveTo) {
		if (fAlt == null || !fAlt.exists())
			return null;

		File file2 = new File(directoryMoveTo, fAlt.getName());
		fAlt.renameTo(file2);
		return file2;
	}
	
	public class SimpleErrorHandler implements ErrorHandler {
		public void warning(SAXParseException e) throws SAXException {
			renameFile(file,"Error");
			System.out.println(e.getMessage());
		}

		public void error(SAXParseException e) throws SAXException {
			renameFile(file,"Error");
			System.out.println(e.getMessage());
		}

		public void fatalError(SAXParseException e) throws SAXException {
			renameFile(file,"Error");
			System.out.println(e.getMessage());
		}

		@Override
		public void error(IllegalAnnotationException arg0) {
			// TODO Auto-generated method stub

		}
	}
}
 
So wie jede andere Datei auch: innerhalb einer Partition mit
Code:
File.rename()
darüber hinaus mit den Klassen in
Code:
Java.(n)io.*

bye
TT
 
[WR]
Da ich aus dem Doppelpost hierhin verschoben wurde, macht mein Post nicht mehr so viel Sinn 😀

Ich lösch das hier dann mal.
[/WR]
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben