Java Codificador XMLGuarde el objeto con,XMLDecodificadorrestaurado con
Javaobjeto conformato XMLPresentamos un programa de muestra para guardar con .
Para salida XMLjava.beans.XMLEncoderUtilizar el.
Tambiénjava.beans.XMLDecodificadorTambién presentaremos un programa de muestra que utiliza esto para restaurar objetos guardados.
programa de muestra
- Los campos declarados privados se guardan cuando define los métodos getter y setter.
- Sólo los cambios realizados en las variables se guardan en el archivo XML.
- También puede especificar java.util.HashMap, java.util.ArrayList, etc. como objeto a guardar. Esto es útil para simplemente guardar el estado de un objeto.
// Salida de datos de bytes al archivo
fileStream = nuevo FileOutputStream(ruta);
fileStream.write(xmlbuff);
fileStream.flush();
} finalmente {
si (enc! = nulo) {
enc.cerrar();
}
si (fuera! = nulo) {
fuera.cerrar();
}
si (fileStream! = nulo) {
fileStream.cerrar();
}
}
}
/**
* Restaura el objeto desde el archivo XML en la ruta especificada [ruta].
* *Los archivos XML deben guardarse usando java.beans.XMLEncoder.
* @param ruta La ruta donde se almacena el objeto.
* @throws FileNotFoundException
* Si el archivo indicado por el nombre de ruta especificado no existe
*/
Objeto estático público readXML (ruta de cadena) lanza FileNotFoundException {
XMLDecoder d = nulo;
intentar {
d = nuevo XMLDecoder(nuevo BufferedInputStream(
nuevo FileInputStream(ruta)));
devolver d.readObject();
} finalmente {
si (d! = nulo) {
d.cerrar();
}
}
}
*La siguiente clase se utilizará como muestra de la clase que se guardará.
Resultado de la ejecución
◆Ejemplo de ejecución
// Restaurar instancia de la clase FreeSoft desde XML
FreeSoft freeSoft2 = (FreeSoft)readXML(“C:\\FreeSoft.xml”);
System.out.println(“Nombre del software:”+freeSoft2.getName());
System.out.println(“URL:”+freeSoft2.getUrl());
} captura (Excepción e) {
e.printStackTrace();
}
}
◆Resultado de salida
Nombre del software: Chat & Messenger ¡Chat y Messenger! ! URL: https://chat-messenger.com/
◆Contenido de C:\\FreeSoft.xml
Puntos a tener en cuenta al usar
Las clases java.beans.XMLEncoder y java.beans.XMLDecoder son útiles, pero cuando se usan prácticamente en Chat&Messenger, en casos extremadamente raros, al enviar a XML con java.beans.XMLEncoder, el archivo pasa a tener 0 bytes. Confirmando.
Si se lee un archivo de 0 bytes, se registrará una excepción ParseException en la "salida de error estándar".
El motivo de esto es que el archivo queda vacío cuando se crea la instancia de FileOutputStream.
Creo que ocurre cuando el proceso Java se cierra después de crear una instancia de FileOutputStream pero antes de generar los datos XML.
Debido a este problema, Chat&Messenger crea un archivo de respaldo para evitar el problema.