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:
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!
Postar um comentário