JAXB passos básicos

Se você ja precisou trabalhar com XML e não conhece JAXB, então seja bem vindo ao mundo das facilidades.


Tudo sobre JAXB:
Tudo sobre Jaxb

Seguem abaixo passos básicos para se programar com JAXB ( by polentero ):

1) Configure os .JAR do JAXB em sua aplicação, torne-os disponíveis em seu classpath de acordo com as necessidades técnicas de sua aplicação (o importante é deixar estas classes disponíveis no classpath, configure como achar mais apropriado):

Downloads do Jaxb

2) Anote sua classe para suportar Jaxb:

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class MinhaClasseAnotada {


private String meuMetodo1;

private String meuMetodo2;


private String getMeuMetodo2() {
return meuMetodo2;
}

private void setMeuMetodo2(String meuMetodo2) {
this.meuMetodo2 = meuMetodo2;
}

private String getMeuMetodo1() {
return meuMetodo1;
}

private void setMeuMetodo1(String meuMetodo1) {
this.meuMetodo1 = meuMetodo1;
}


}


// pronto esta anotada, se quizer você pode especializar atributos e elementos ex:

@XmlAttribute
private Long meuId;

@XmlElement(name="meu-nome")
private String meuNome;




3) Com seu classpath configurado e classe anotada, execute esses simples códigos de teste:


// Faz marshal de uma classe anotada
Document document = null;
try {

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = null;

docBuilder = factory.newDocumentBuilder();

document = docBuilder.newDocument();

JAXBContext context = JAXBContext.newInstance( minhaClasseAnotada.getClass() );
Marshaller marshall = context.createMarshaller();


marshall.setProperty(Marshaller.JAXB_ENCODING, "ISO-8859-1");
marshall.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, new Boolean(true));

marshall.marshal(minhaClasseAnotada, document);


} catch (JAXBException e) {
IllegalStateException ex = new IllegalStateException(e.getLocalizedMessage(), e);
ex.setStackTrace(e.getStackTrace());
throw ex;
} catch (ParserConfigurationException e) {
IllegalStateException ex = new IllegalStateException(e.getLocalizedMessage(), e);
ex.setStackTrace(e.getStackTrace());
throw ex;
}


// document ja pode ser usado
return document......



4) Imprima o XML para testar o resultado

private static void printDocument(Document document ) {

TransformerFactory factory = TransformerFactory.newInstance();
try {
DOMSource source = new DOMSource(document);

StreamResult result = new StreamResult(System.out);

Transformer transformer = factory.newTransformer();

transformer.setOutputProperty(OutputKeys.INDENT,"yes");

transformer.transform(source, result);

} catch (TransformerConfigurationException e) {
e.printStackTrace();
} catch (TransformerException e) {
e.printStackTrace();
}
}




Dica: Você pode fazer uma classe primária que recebe o Objeto a ser transformado, faça o seu Marshaller com as características do seu projeto.

Abraço

Um comentário:

Juliano Pacheco disse...

Muito bom o exemplo,
fiz aqui por que precisava trabalhar com arquivos XML e funcionou beleza.

Recomendo ;)

E tamo esperando ai o post sobre EJB, ja como tu é o cara do EJB.

Abração!