# Fehlerhafte XML-Files verschieben



## big_killa (1. Feb 2013)

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 `????


----------



## anti-held (1. Feb 2013)

verschieben von files:
effektives-file-move-copy


----------



## FanClub (1. Feb 2013)

hi,

so mache ich das.


```
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;
	}
```


----------



## Timothy Truckle (1. Feb 2013)

FanClub hat gesagt.:


> so mache ich das.
> 
> 
> 
> ...


Vorsicht: Ob das auch über Partitionsgrenzen hinweg funktioniert hängt von der Implementierung des Dateisystem ab.

bye
TT


----------



## big_killa (4. Feb 2013)

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: 


```
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

		}
	}
}
```


----------



## Timothy Truckle (4. Feb 2013)

So wie jede andere Datei auch: innerhalb einer Partition mit 
	
	
	
	





```
File.rename()
```
 darüber hinaus mit den Klassen in 
	
	
	
	





```
Java.(n)io.*
```

bye
TT


----------



## F.S.WhiTeY (4. Feb 2013)

[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]


----------

