Java para XML / XML para Java

Olá pessoal!
Vou colocar alguns tutoriais sobre Java a partir de hoje! Tentarei colocar códigos auto-explicativos 🙂

absss

package com.joaosavio.xmltest.util;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Reader;
import java.io.StringReader;
import java.io.StringWriter;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;

/**
 *
 * @author joaosavio
 */
public class XmlUtil {
    /**
     * Create a XML file from Java object
     * @param clazz
     * @param objectClass
     * @param fullPath
     * @return a XML file
     */
    public static File createFile(Class clazz, Object objectClass, String fullPath) {
        File file = new File(fullPath);
        FileWriter fw = null;
        try {
            file.createNewFile();
            JAXBContext context = JAXBContext.newInstance(clazz);
            Marshaller marshaller = context.createMarshaller();
            marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
            fw = new FileWriter(file);
            marshaller.marshal(objectClass, fw);
            return file;
        } catch (JAXBException e) {
            // handle the exception
        } catch (IOException e) {
            // handle the exception     
        } finally {
            try {
                if (fw != null) {
                    fw.close();
                }
            } catch (IOException ex) {
                // handle the exception
            }
        }
    }

    /**
     * Create a XML String from Java object
     * @param clazz
     * @param objectClass
     * @return a XML String
     */
    public static String createString(Class clazz, Object objectClass) {
        StringWriter sw = new StringWriter();
        try {
            JAXBContext context = JAXBContext.newInstance(clazz);
            Marshaller marshaller = context.createMarshaller();
            marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, false);
            marshaller.marshal(objectClass, sw);
            String result = sw.toString();
            return result;
        } catch (JAXBException e) {
            // handle the exception
        }  finally {
            try {
                sw.close();
            } catch (IOException ex) {
                // handle the exception
            }
        }
    }

    /**
     * Read a XML file
     * @param clazz
     * @param fileFullPath
     * @return a Java Object
     */
    public static Object readFile(Class clazz, String fileFullPath) {
        File file = new File(fileFullPath);
        if (!file.exists()) {
            // throw an exception
        }

        try {
            JAXBContext context = JAXBContext.newInstance(clazz);
            Unmarshaller unmarshaller = context.createUnmarshaller();
            return unmarshaller.unmarshal(file);
        } catch (JAXBException e) {
            // handle the exception
        }
    }

    /**
     * Read a XML String
     * @param clazz
     * @param xml
     * @return a Java object
     */
    public static Object readString(Class clazz, String xml) {
        Reader reader = new StringReader(xml);
        try {
            JAXBContext context = JAXBContext.newInstance(clazz);
            Unmarshaller unmarshaller = context.createUnmarshaller();
            return unmarshaller.unmarshal(reader);
        } catch (JAXBException e) {
            // handle the exception
        } finally {   
            try {
                reader.close();
            } catch (IOException ex) {
                // handle the exception
            }
        }
    }
}

No pom.xml adicione:

<dependency>
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-impl</artifactId>
    <version>2.2.4-1</version>
</dependency>
Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s