Por que não gosto da IBM ?
Ae tem gente que não entende porque não gosto da IBM...
http://www.theserverside.com/news/thread.tss?thread_id=48035
http://www.theserverside.com/news/thread.tss?thread_id=48035
Brincando de JAXB
Eu estou agora brincando um pouquinho com o JAXB 2.1 para serializar objetos Java para XML e vice versa...
Veja que legal a classe:
@XmlRootElement(name="MeuPrimeiroTesteEmXMLUsandoJaxB")
@XmlAccessorType(XmlAccessType.FIELD)
public class SalvandoEmXML implements java.io.Serializable {
private static final long serialVersionUID = 1L;
@XmlAttribute
private String valorDoXML;
@XmlElement
private String nome;
@XmlElement
private int idade;
@XmlElementWrapper(name="parentes")
private List<String> parentesco = new ArrayList<String>();
@XmlElementWrapper(name="classeLinda")
private List<OutraClasseLinda> lindissimas = new ArrayList<OutraClasseLinda>();
@XmlElementWrapper(name="mapa")
private Map<String,Object> parametrosEmMapa = new HashMap<String,Object>();
{.... gets e sets}
Agora veja a classe contida:
@XmlRootElement(name="OutroRoot")
@XmlAccessorType(XmlAccessType.FIELD)
public class OutraClasseLinda implements java.io.Serializable {
private static final long serialVersionUID = 1L;
@XmlElement
private Tipo tipo = Tipo.TIPO1;
@XmlAttribute
private String id;
@XmlElement
private String propriedade1;
@XmlElement
private String propriedade2;
@XmlElement
private float propriedade3;
{.... gets e sets}
Utilizo estes comandos para gerar :
JAXBContext context = JAXBContext.newInstance(new Class[]{SalvandoEmXML.class});
Marshaller marshaller = context.createMarshaller();
marshaller.marshal(instancia, new FileWriter("instancia.xml"));
Veja o XML que me voltou:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<MeuPrimeiroTesteEmXMLUsandoJaxB valorDoXML="UmValorBemGrandao">
<nome>Dyego Souza do Carmo</nome>
<idade>55</idade>
<parentes>
<parentesco>Maria das dores
sabe neh
eu nao vou dar ENTER !!!!</parentesco>
<parentesco>Maria Silva</parentesco>
<parentesco>Carlos Amaro</parentesco>
<parentesco>Santa Safada</parentesco>
</parentes>
<classeLinda>
<lindissimas id="1">
<tipo>TIPO1</tipo>
<propriedade1>Oie 1</propriedade1>
<propriedade2>Oie 2</propriedade2>
<propriedade3>1.1</propriedade3>
</lindissimas>
<lindissimas id="2">
<tipo>TIPO1</tipo>
<propriedade1>Oie 1.2</propriedade1>
<propriedade2>Oie 2.3</propriedade2>
<propriedade3>2.2</propriedade3>
</lindissimas>
</classeLinda>
<mapa>
<entry>
<key>chave1</key>
<value xsi:type="xs:int" >1</value>
</entry>
<entry>
<key>chave2</key>
<value xsi:type="xs:string">sabedeus</value>
</entry>
</mapa>
</MeuPrimeiroTesteEmXMLUsandoJaxB>
Para retornar voce utiliza:
Unmarshaller unmarshaller = context.createUnmarshaller();
SalvandoEmXML instanciaFrida = (SalvandoEmXML) unmarshaller.unmarshal(new File("instancia.xml"));
Curioso não ? Simples facil e MUITO util....
Veja que legal a classe:
@XmlRootElement(name="MeuPrimeiroTesteEmXMLUsandoJaxB")
@XmlAccessorType(XmlAccessType.FIELD)
public class SalvandoEmXML implements java.io.Serializable {
private static final long serialVersionUID = 1L;
@XmlAttribute
private String valorDoXML;
@XmlElement
private String nome;
@XmlElement
private int idade;
@XmlElementWrapper(name="parentes")
private List<String> parentesco = new ArrayList<String>();
@XmlElementWrapper(name="classeLinda")
private List<OutraClasseLinda> lindissimas = new ArrayList<OutraClasseLinda>();
@XmlElementWrapper(name="mapa")
private Map<String,Object> parametrosEmMapa = new HashMap<String,Object>();
{.... gets e sets}
Agora veja a classe contida:
@XmlRootElement(name="OutroRoot")
@XmlAccessorType(XmlAccessType.FIELD)
public class OutraClasseLinda implements java.io.Serializable {
private static final long serialVersionUID = 1L;
@XmlElement
private Tipo tipo = Tipo.TIPO1;
@XmlAttribute
private String id;
@XmlElement
private String propriedade1;
@XmlElement
private String propriedade2;
@XmlElement
private float propriedade3;
{.... gets e sets}
Utilizo estes comandos para gerar :
JAXBContext context = JAXBContext.newInstance(new Class[]{SalvandoEmXML.class});
Marshaller marshaller = context.createMarshaller();
marshaller.marshal(instancia, new FileWriter("instancia.xml"));
Veja o XML que me voltou:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<MeuPrimeiroTesteEmXMLUsandoJaxB valorDoXML="UmValorBemGrandao">
<nome>Dyego Souza do Carmo</nome>
<idade>55</idade>
<parentes>
<parentesco>Maria das dores
sabe neh
eu nao vou dar ENTER !!!!</parentesco>
<parentesco>Maria Silva</parentesco>
<parentesco>Carlos Amaro</parentesco>
<parentesco>Santa Safada</parentesco>
</parentes>
<classeLinda>
<lindissimas id="1">
<tipo>TIPO1</tipo>
<propriedade1>Oie 1</propriedade1>
<propriedade2>Oie 2</propriedade2>
<propriedade3>1.1</propriedade3>
</lindissimas>
<lindissimas id="2">
<tipo>TIPO1</tipo>
<propriedade1>Oie 1.2</propriedade1>
<propriedade2>Oie 2.3</propriedade2>
<propriedade3>2.2</propriedade3>
</lindissimas>
</classeLinda>
<mapa>
<entry>
<key>chave1</key>
<value xsi:type="xs:int" >1</value>
</entry>
<entry>
<key>chave2</key>
<value xsi:type="xs:string">sabedeus</value>
</entry>
</mapa>
</MeuPrimeiroTesteEmXMLUsandoJaxB>
Para retornar voce utiliza:
Unmarshaller unmarshaller = context.createUnmarshaller();
SalvandoEmXML instanciaFrida = (SalvandoEmXML) unmarshaller.unmarshal(new File("instancia.xml"));
Curioso não ? Simples facil e MUITO util....