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); }
}