parsear xml con java

eva
15 de Febrero del 2005
Hola estoy haciendo copias de seguridad de mi base de datos y la hago creando ficheros XML.PROBLEMA!!!!
que ahora quiero hacer la restauracion y el codigo no me funciona alguien puede ayudarme, os adjunto el codigo a ver si alguien me lo corrige.

import java.io.*;
import org.xml.sax.*;
import org.xml.sax.helpers.*;
import java.util.*;


class LerCopia extends DefaultHandler{
//Esta clase le o ficheiro empresa.xml e obten os datos de el
private String tagIni;
private String datos ;
ArrayList empresas=new ArrayList();
Empresa e=new Empresa();
Empresa aux=new Empresa();
int contador=1;
String arquivo = "empresa.xml";

public void LerCopia(String ruta,ArrayList vector) {
empresas=vector;
arquivo = ruta + "\" + arquivo;
obterFicheiro();
}

/*Este método obten o ficheiro de xml para poder leelo*/
public void obterFicheiro () {
try {
XMLReader parser=null;
parser = XMLReaderFactory.createXMLReader("org.apache.xerces.parsers.SAXParser");
parser.setContentHandler(this);
parser.parse(arquivo);
} catch (Exception e) { }
}

/*Este método chamase cada vez que o parser atopase ó comenzo do documento*/
public void startDocument () throws SAXException {
System.out.println("estou o comenzo");
} // Fin startDocument

/*Este método chámase cada vez que o parse se atopa o final do documento*/
public void endDocument() throws SAXException {
System.out.println("estou o fin");
} //Fin endDocument

/*Este método chamase cando se atopa ó comenzo dunha etiqueta*/
public void startElement (String uri, String localName, String etiqueta, Attributes atts) throws SAXException {
System.out.println("topei unha etiqueta");
if (etiqueta.equals("nomeClave")) {
tagIni="nomeClave";
} else if (etiqueta.equals("contrasinal")) {
tagIni="contrasinal";
}
} // Fin startElement

/*Este método chamase cando se atopa o final dunha etiqueta*/
public void endElement (String uri, String localName, String etiqueta) throws SAXException {
System.out.println("acabei coa etiqueta");
if (etiqueta.equals("nomeClave")& tagIni.equals("nomeClave")){
e.setNomeclave(datos);
}else if (etiqueta.equals("contrasinal")& tagIni.equals("contrasinal")){
e.setContrasinal(datos);
}
if(!(e.getNome()).equals("") || !(e.getNomeclave()).equals("")|| !(e.getContrasinal()).equals("")){
switch (contador){
case 1: aux.setNomeclave(e.getNomeclave());
contador ++;
break;
case 2: aux.setContrasinal(e.getContrasinal());
empresas.add(aux);
aux=new Empresa();
contador=1;
break;
}
}
datos = "";
} // Fin endElement

/*Este método chamase cando se atopan caracteres dentro do elemento*/
public void characters (char buf [], int offset, int length) throws SAXException {
System.out.println("estou cos datos");
String datosAux = new String (buf,offset,length);
datosAux = datosAux.trim();
if(!datosAux.equals("rn")) {
datos = datos.concat(datosAux);
}
} // Fin characters

public void ignorableWhitespace(char[] ch, int start, int length) {}

public void processingInstruction(java.lang.String target, java.lang.String data) {}

public void setDocumentLocator(Locator locator) {}

public InputSource resolveEntity(java.lang.String publicId, java.lang.String systemId) {
return null;
}


public static void main(String []args){
LerCopia lc=new LerCopia();
Empresa e=new Empresa();
ArrayList t=new ArrayList();
lc.LerCopia("c:",t);
int i=0;
while(i < t.size()){
System.out.println(i+" "+((Empresa)t.get(i)).getNomeclave()+" "+((Empresa)t.get(i)).getContrasinal());
i++;
}
}
}


Este codigo es para leer el fichero xml, en este caso se llama empresa.xml y solo guarda dos campos nombre clave y contraseña, y los datos los va introduciendo en un arrayList .


Gracias por todo