Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Clase SAX */
- import android.os.Environment;
- import android.util.Log;
- import android.util.Xml;
- import org.xmlpull.v1.XmlSerializer;
- import java.io.File;
- import java.io.FileOutputStream;
- import java.util.ArrayList;
- import java.util.List;
- import javax.xml.parsers.SAXParser;
- import javax.xml.parsers.SAXParserFactory;
- import co.gov.mintransporte.listaspersonalizadas.entidades.Contactos;
- import co.gov.mintransporte.listaspersonalizadas.negocio.Archivador;
- import co.gov.mintransporte.listaspersonalizadas.util.Manejador;
- public class ArchivoSax implements Archivador {
- private final String RUTA_ARCHIVO = Environment.getExternalStorageDirectory()
- .getAbsolutePath()+"/listas";
- public ArchivoSax() {
- try {
- File directorio = new File(RUTA_ARCHIVO);
- if(!directorio.exists()){
- directorio.mkdirs();
- }
- Log.v("Creacion de carpeta","La carpeta se encuentra disponible");
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- @Override
- public void escritura(List<Contactos> listaContactos) {
- try {
- XmlSerializer serializador = Xml.newSerializer();
- serializador.setOutput(
- new FileOutputStream(
- new File(RUTA_ARCHIVO+"/contactos_sax.xml")
- ),
- "utf-8"
- );
- serializador.startDocument("utf-8",true);
- serializador.startTag("","lista");
- for(Contactos contacto : listaContactos){
- serializador.startTag("","contacto");
- serializador.startTag("","nombre");
- serializador.text(contacto.getNombre());
- serializador.endTag("", "nombre");
- serializador.startTag("", "edad");
- serializador.text(contacto.getEdad() + "");
- serializador.endTag("", "edad");
- serializador.startTag("", "documento");
- serializador.text(contacto.getDocumento() + "");
- serializador.endTag("", "documento");
- serializador.endTag("","contacto");
- }
- serializador.endTag("","lista");
- serializador.endDocument();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- @Override
- public List<Contactos> lectura() {
- try {
- SAXParserFactory fabricaSax = SAXParserFactory.newInstance();
- SAXParser parser = fabricaSax.newSAXParser();
- Manejador manejador = new Manejador();
- parser.parse(
- new File(RUTA_ARCHIVO+"/contactos_sax.xml"),
- manejador
- );
- return manejador.getListaContactos();
- } catch (Exception e) {
- e.printStackTrace();
- }
- return new ArrayList<>();
- }
- }
- /* Clase DOM */
- import android.os.Environment;
- import android.util.Log;
- import org.w3c.dom.Document;
- import org.w3c.dom.Element;
- import org.w3c.dom.Node;
- import org.w3c.dom.NodeList;
- import java.io.File;
- import java.util.ArrayList;
- 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 co.gov.mintransporte.listaspersonalizadas.entidades.Contactos;
- import co.gov.mintransporte.listaspersonalizadas.negocio.Archivador;
- /**
- * Created by Lord_Nightmare on 13/11/15.
- */
- public class ArchivoDom implements Archivador {
- private final String RUTA_ARCHIVO = Environment
- .getExternalStorageDirectory().getAbsolutePath()+"/listas";
- public ArchivoDom(){
- try {
- File directorio = new File(RUTA_ARCHIVO);
- if(!directorio.exists()){
- directorio.mkdirs();
- }
- Log.v("Creacion de carpeta","La carpeta se encuentra disponible");
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- @Override
- public void escritura(List<Contactos> listaContactos) {
- try {
- // instancia de la fabrica de documentos
- DocumentBuilderFactory fabricaDoc = DocumentBuilderFactory.newInstance();
- // instancia del fabricante de documentos
- DocumentBuilder fabricante = fabricaDoc.newDocumentBuilder();
- // creacion del documento en memoria
- Document documento = fabricante.newDocument();
- Element elementoLista = documento.createElement("lista");
- // Iterar lista de contactos con un foreach
- for(Contactos contacto : listaContactos){
- Element elementoContacto = documento.createElement("contacto");
- Element elementoNombre = documento.createElement("nombre");
- elementoNombre.setTextContent(contacto.getNombre());
- // incluir elemento de nombre al elemento de contacto
- elementoContacto.appendChild(elementoNombre);
- Element elementoEdad = documento.createElement("edad");
- elementoEdad.setTextContent(contacto.getEdad() + "");
- elementoContacto.appendChild(elementoEdad);
- Element elementoDocumento = documento.createElement("documento");
- elementoDocumento.setTextContent(contacto.getDocumento()+"");
- elementoContacto.appendChild(elementoDocumento);
- elementoLista.appendChild(elementoContacto);
- }
- documento.appendChild(elementoLista);
- //Creacion de la fabrica de transformacion del documento
- TransformerFactory fabricaTra = TransformerFactory.newInstance();
- Transformer transformador = fabricaTra.newTransformer();
- // asignar los recursos para generar el archivo plano
- DOMSource origen = new DOMSource(documento);
- StreamResult resultado = new StreamResult(
- new File(RUTA_ARCHIVO+"/contactos_dom.xml")
- );
- // transformar el archivo de memoria a almacenamiento
- transformador.transform(origen,resultado);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- @Override
- public List<Contactos> lectura() {
- List<Contactos> listaContactos = new ArrayList<>();
- try {
- // instancia de la fabrica de documentos
- DocumentBuilderFactory fabricaDoc = DocumentBuilderFactory.newInstance();
- // instancia del fabricante de documentos
- DocumentBuilder fabricante = fabricaDoc.newDocumentBuilder();
- // creacion del documento en memoria
- Document documento = fabricante.parse(
- new File(RUTA_ARCHIVO+"/contactos_dom.xml")
- );
- // Obtener los nodos del documento segun un atributo de nombre
- NodeList nodoListaContactos = documento.getElementsByTagName("contacto");
- for (int i = 0; i < nodoListaContactos.getLength(); i++) {
- Node nodoContacto = nodoListaContactos.item(i);
- Contactos contacto = new Contactos();
- // segundo nivel de profundidad del xml segun los atrbutos del
- // contacto
- NodeList nodoListaAtributos = nodoContacto.getChildNodes();
- for (int j = 0; j < nodoListaAtributos.getLength(); j++) {
- Node nodoAtributo =nodoListaAtributos.item(j);
- String nombreAtributo = nodoAtributo.getNodeName();
- String valorAtributo = nodoAtributo.getTextContent();
- switch (nombreAtributo){
- case "nombre":
- contacto.setNombre(valorAtributo);
- break;
- case "edad":
- contacto.setEdad(Integer.parseInt(valorAtributo));
- break;
- case "documento":
- contacto.setDocumento(Long.parseLong(valorAtributo));
- break;
- }
- }
- listaContactos.add(contacto);
- }
- return listaContactos;
- } catch (Exception e) {
- e.printStackTrace();
- }
- return new ArrayList<>();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement