/**
*
* Copyright 2017 Xiamen Dragon Software Eng. Co. Ltd.
* All right reserved.
*====================================================
* 文件名称: JaxbUtil.java
* 修订记录:
* No 日期 作者(操作:具体内容)
* 1. 2017年6月20日 fengyz(创建:创建文件)
*====================================================
* 类描述:(说明未实现或其它不应生成javadoc的内容)
*
*/
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;
/**
*<pre><b><font color="blue">JaxbUtil</font></b></pre>
*
*<pre><b> --描述说明--</b></pre>
* <pre></pre>
* <pre>
* <b>--样例--</b>
* JaxbUtil obj = new JaxbUtil();
* obj.method();
* </pre>
* JDK版本:JDK1.6
* @author <b>fengyz</b>
*/
public class JaxbUtil {
/**
* JavaBean转换成xml
* 默认编码UTF-8
* @param obj
* @param writer
* @return
*/
public static String convertToXml(Object obj) {
return convertToXml(obj, "UTF-8");
}
/**
* JavaBean转换成xml
* @param obj
* @param encoding
* @return
*/
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;
}
/**
* xml转换成JavaBean
* @param xml
* @param c
* @return
*/
@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
/**
*
* Copyright 2017 Xiamen Dragon Software Eng. Co. Ltd.
* All right reserved.
*====================================================
* 文件名称: Country.java
* 修订记录:
* No 日期 作者(操作:具体内容)
* 1. 2017年6月20日 fengyz(创建:创建文件)
*====================================================
* 类描述:(说明未实现或其它不应生成javadoc的内容)
*
*/
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;
/**
*<pre><b><font color="blue">Country</font></b></pre>
*
*<pre><b> --描述说明--</b></pre>
* <pre></pre>
* <pre>
* <b>--样例--</b>
* Country obj = new Country();
* obj.method();
* </pre>
* JDK版本:JDK1.6
* @author <b>fengyz</b>
*/
@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;
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @return the provinceList
*/
public List<Province> getProvinceList() {
return provinceList;
}
/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* @param provinceList the provinceList to set
*/
public void setProvinceList(List<Province> provinceList) {
this.provinceList = provinceList;
}
/* (non-Javadoc)
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
return "Country [name=" + name + ", provinceList=" + provinceList + "]";
}
}
/**
*
* Copyright 2017 Xiamen Dragon Software Eng. Co. Ltd.
* All right reserved.
*====================================================
* 文件名称: Province.java
* 修订记录:
* No 日期 作者(操作:具体内容)
* 1. 2017年6月20日 fengyz(创建:创建文件)
*====================================================
* 类描述:(说明未实现或其它不应生成javadoc的内容)
*
*/
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;
/**
*<pre><b><font color="blue">Province</font></b></pre>
*
*<pre><b> --描述说明--</b></pre>
* <pre></pre>
* <pre>
* <b>--样例--</b>
* Province obj = new Province();
* obj.method();
* </pre>
* JDK版本:JDK1.6
* @author <b>fengyz</b>
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(propOrder = { "name", "provCity" })
public class Province {
@XmlElement(name = "province_name")
private String name;
@XmlElement(name = "prov_city")
private String provCity;
/**
* @return the provCity
*/
public String getProvCity() {
return provCity;
}
/**
* @param provCity the provCity to set
*/
public void setProvCity(String provCity) {
this.provCity = provCity;
}
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}
/* (non-Javadoc)
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
return "Province [name=" + name + ", provCity=" + provCity + "]";
}
}
/**
*
* Copyright 2017 Xiamen Dragon Software Eng. Co. Ltd.
* All right reserved.
*====================================================
* 文件名称: JaxbTest3.java
* 修订记录:
* No 日期 作者(操作:具体内容)
* 1. 2017年6月20日 fengyz(创建:创建文件)
*====================================================
* 类描述:(说明未实现或其它不应生成javadoc的内容)
*
*/
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;
/**
*<pre><b><font color="blue">JaxbTest3</font></b></pre>
*
*<pre><b> --描述说明--</b></pre>
* <pre></pre>
* <pre>
* <b>--样例--</b>
* JaxbTest3 obj = new JaxbTest3();
* obj.method();
* </pre>
* JDK版本:JDK1.6
* @author <b>fengyz</b>
*/
public class JaxbTest3 {
/**
* @throws JAXBException
*/
@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);
}
}