importorg.apache.commons.beanutils.BeanUtils;importorg.jdom.Document;importorg.jdom.Element;importorg.jdom.input.SAXBuilder;importorg.xml.sax.InputSource;importjavax.xml.bind.JAXBContext;importjavax.xml.bind.JAXBException;importjavax.xml.bind.Marshaller;importjava.io.StringReader;importjava.io.StringWriter;importjava.lang.reflect.Field;importjava.util.ArrayList;importjava.util.List;/*** xml与bean互转工具类*/
public classJaXmlBeanUtil {/*** 将javaBean转换为xml对象
*@paramclazz
*@parambean
*@return
*/
public staticString parseBeanToXml(Class clazz,Object bean){
StringWriter sw= null;try{
JAXBContext jaxbContext=JAXBContext.newInstance(clazz);
Marshaller jaxbMarshaller=jaxbContext.createMarshaller();
sw= newStringWriter();//该值默认为false,true则不会创建即头信息,即<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
jaxbMarshaller.setProperty(Marshaller.JAXB_FRAGMENT, true);
jaxbMarshaller.marshal(bean, sw);
}catch(JAXBException e) {
e.printStackTrace();
}returnsw.toString();
}/***将xml对象转换为javaBean
*@paramclazz
*@paramxml
*@return
*/
public staticObject parseXmlToBean(Class clazz,String xml){if(xml!=null&&xml!=""){
Field[] fields=clazz.getDeclaredFields();
List fieldList = new ArrayList();for(Field fie : fields) {if (fie.isAnnotationPresent(XmlElementAnno.class)) {
fieldList.add(fie);
}
}try{
StringReader read= newStringReader(xml);
InputSource source= newInputSource(read);//创建一个新的SAXBuilder
SAXBuilder sb = newSAXBuilder();
Document doc=sb.build(source);//取的根元素
Element root =doc.getRootElement();
Object object=clazz.newInstance();if(!fieldList.isEmpty()){for(Field field : fieldList) {
Element child=root.getChild(field.getName());if(child!=null){
BeanUtils.setProperty(object, field.getName(), child.getValue());
}
}
}returnobject;
}catch(Exception e) {
e.printStackTrace();
}
}return null;
}
}