1. XML: convertendo objetos em XML com JaxB

    Em meio a projetos, por vezes, precisamos fornecer informações através de serviços sejam eles WebServices, RestFul WebServices, JMS, etc.. Em muitos desses casos acabamos adotando o XML. API para manipular XML é o que menos falta. Mas Jaxb (Java Architecture for Binding) foi dasque mais me impressionou.

    O JaxB permite que tu crie streams de XML a partir de objetos, e permite preencher/instanciar objetos a partir de XMLs (o que seria o processo inverso). Já trabalhei com XStream certa vez, tive resultados bons com ele. Porém, em virtude do meu ultimo projeto ser curto, usei as rotinas implementadas no JDK.

    Primeiro, criei uma entidade simples para Cliente e Endereço do Cliente:

    	@XmlRootElement(name="customer")
    	public Customer {
    		private String name;
    		@XmlElementWrapper(name="addresses")
    		private Listaddresses;
    		private String phone;
    
    		// Getters and Setters
    	}
    
    	public class Address {
    		@XmlAttribute
    		private String street;
    		@XmlAttribute
    		private String number;
    		@XmlAttribute
    		private String city;
    		@XmlAttribute
    		private String country;
    	
    		// Getters and Setters
    	}
    

    Depois de alimentar o objeto com informações a rotina abaixo resolveu o processo de converter o meu objeto em XML no meu Stream de saida, onde: output é um FileOutputStream (mas poderia ser qualquer Stream), e o customer é uma instância de Customer.

    	JAXBContext jaxb = JAXBContext.newInstance(Customer.class);
    	Marshaller marshaller = jaxb.createMarshaller();
    	marshaller.marshal(customer, outputFile);
    

    Nice Code Monkeys!

    2 years ago  /  Notes