天天看點

javeBean與xml之間的互相轉換

package com.dragonsoft.kyry.sys.test;

import java.io.StringReader; import java.io.StringWriter;

import javax.xml.bind.JAXBContext; import javax.xml.bind.Marshaller; import javax.xml.bind.Unmarshaller;

public class JaxbUtil {           public static String convertToXml(Object obj) {          return convertToXml(obj, "UTF-8");      } 

          public static String convertToXml(Object obj, String encoding) {          String result = null;          try {              JAXBContext context = JAXBContext.newInstance(obj.getClass());              Marshaller marshaller = context.createMarshaller();              marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, false);              marshaller.setProperty(Marshaller.JAXB_ENCODING, encoding);             marshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.FALSE);             StringWriter writer = new StringWriter();              marshaller.marshal(obj, writer);             result = writer.toString();          } catch (Exception e) {              e.printStackTrace();          } 

        return result;      } 

          @SuppressWarnings("unchecked")      public static <T> T converyToJavaBean(String xml, Class<T> c) {          T t = null;          try {              JAXBContext context = JAXBContext.newInstance(c);              Unmarshaller unmarshaller = context.createUnmarshaller();              t = (T) unmarshaller.unmarshal(new StringReader(xml));          } catch (Exception e) {              e.printStackTrace();          } 

        return t;      }  }

Test

package com.dragonsoft.kyry.sys.test;

import java.util.List;

import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlElementWrapper; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlType;

@XmlAccessorType(XmlAccessType.FIELD)  @XmlRootElement(name = "country")  // @XmlType(propOrder = { "name", "provinceList" })  public class Country { 

    @XmlElement(name = "country_name")      private String name; 

    @XmlElementWrapper(name = "provinces")      @XmlElement(name = "province")      private List<Province> provinceList; 

          public String getName() {          return name;      } 

          public List<Province> getProvinceList() {          return provinceList;     } 

          public void setName(String name) {          this.name = name;      } 

          public void setProvinceList(List<Province> provinceList) {          this.provinceList = provinceList;      } 

          @Override      public String toString() {          return "Country [name=" + name + ", provinceList=" + provinceList + "]";      } 

package com.dragonsoft.kyry.sys.test;

import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlType;

@XmlAccessorType(XmlAccessType.FIELD)  @XmlType(propOrder = { "name", "provCity" })  public class Province { 

    @XmlElement(name = "province_name")      private String name; 

    @XmlElement(name = "prov_city")      private String provCity; 

          public String getProvCity() {          return provCity;      } 

          public void setProvCity(String provCity) {          this.provCity = provCity;      } 

          public String getName() {          return name;      } 

          public void setName(String name) {          this.name = name;      } 

          @Override      public String toString() {          return "Province [name=" + name + ", provCity=" + provCity + "]";      } 

package com.dragonsoft.kyry.sys.test;

import java.util.ArrayList; import java.util.List;

import javax.xml.bind.JAXBException;

import org.junit.Test;

import com.dragonsoft.kyry.sys.service.impl.BusService; import com.dragonsoft.kyry.sys.vo.HcTaskParam;

public class JaxbTest3 { 

          @Test      public void showMarshaller() {          Country country = new Country();          country.setName("中國"); 

        List<Province> list = new ArrayList<Province>();          Province province = new Province();          province.setName("江蘇省");          province.setProvCity("南京市"); 

        Province province2 = new Province();          province2.setName("浙江省");          province2.setProvCity("杭州市"); 

        list.add(province);          list.add(province2); 

        country.setProvinceList(list); 

        String str = JaxbUtil.convertToXml(country);          System.out.println(str.replaceFirst(BusService.JAXB_XML_HEADER, ""));      } 

    @Test     public void testHcTaskParam() {     HcTaskParam vo = new HcTaskParam();     vo.setJssj("2017-05-05 00:00:00");

    vo.setKssj("2017-05-01 00:00:00");

    System.out.println(JaxbUtil.convertToXml(vo));     }

          @Test      public void showUnMarshaller() {          String str = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>"+              "<country>"+              "    <country_name>中國</country_name>"+              "    <provinces>"+              "        <province>"+              "            <province_name>江蘇省</province_name>"+               "           <prov_city>南京市</prov_city>"+              "        </province>"+               "       <province>"+               "           <province_name>浙江省</province_name>"+               "           <prov_city>杭州市</prov_city>"+               "       </province>"+              "    </provinces>"+              "</country>";          Country country = JaxbUtil.converyToJavaBean(str, Country.class);          System.out.println(country);      }