Convert xml to java bean -


how can covert xml file simple java bean? simple xml file without xsd, generated java bean, don't have access to.

i tried using xmlbeans first generate xmd xml , generate classes xsd. got bunch of classes. looking single java bean class.

jaxb

jaxb (jsr-222) provides easy way convert objects xml. there many open source implementations of standard including:

jaxb has default mapping java objects xml. mapping can customized through application of annotations.

import javax.xml.bind.annotation.xmlrootelement; import javax.xml.bind.annotation.element;  @xmlrootelement public class address {      private string street;      private string city;      private string state;      private string country;      @xmlelement(name="postal-code")     private string postalcode;  } 

would correspond following xml:

<address>     <street>123 street</street>     <city>any town</city>     <state>a state</state>     <postal-code>12345</postal-code> </address> 

eclipselink jaxb (moxy)

moxy has xpath based mapping extension. means can take our same address class , map google's geocode format:

import javax.xml.bind.annotation.xmlrootelement; import javax.xml.bind.annotation.xmltype;  import org.eclipse.persistence.oxm.annotations.xmlpath;  @xmlrootelement(name="kml") @xmltype(proporder={"country", "state", "city", "street", "postalcode"}) public class address {      @xmlpath("response/placemark/ns:addressdetails/ns:country/ns:administrativearea/ns:subadministrativearea/ns:locality/ns:thoroughfare/ns:thoroughfarename/text()")     private string street;      @xmlpath("response/placemark/ns:addressdetails/ns:country/ns:administrativearea/ns:subadministrativearea/ns:locality/ns:localityname/text()")     private string city;      @xmlpath("response/placemark/ns:addressdetails/ns:country/ns:administrativearea/ns:administrativeareaname/text()")     private string state;      @xmlpath("response/placemark/ns:addressdetails/ns:country/ns:countrynamecode/text()")     private string country;      @xmlpath("response/placemark/ns:addressdetails/ns:country/ns:administrativearea/ns:subadministrativearea/ns:locality/ns:postalcode/ns:postalcodenumber/text()")     private string postalcode;  } 

the above class corresponds following xml:

<?xml version="1.0" encoding="utf-8"?> <kml xmlns="http://earth.google.com/kml/2.0" xmlns:ns="urn:oasis:names:tc:ciq:xsdschema:xal:2.0">     <response>         <placemark>             <ns:addressdetails>                 <ns:country>                     <ns:countrynamecode>us</ns:countrynamecode>                     <ns:administrativearea>                         <ns:administrativeareaname>ca</ns:administrativeareaname>                         <ns:subadministrativearea>                             <ns:locality>                                 <ns:localityname>mountain view</ns:localityname>                                 <ns:thoroughfare>                                     <ns:thoroughfarename>1600 amphitheatre pkwy</ns:thoroughfarename>                                 </ns:thoroughfare>                                 <ns:postalcode>                                     <ns:postalcodenumber>94043</ns:postalcodenumber>                                 </ns:postalcode>                             </ns:locality>                         </ns:subadministrativearea>                     </ns:administrativearea>                 </ns:country>             </ns:addressdetails>         </placemark>     </response> </kml>  

for more information


Comments