通过JAXB实现XML和实体对象的互转,代码如下:
import java.io.IOException; import java.io.StringReader; import java.io.StringWriter; import javax.xml.bind.JAXBContext; import javax.xml.bind.Marshaller; import javax.xml.bind.Unmarshaller; import org.apache.log4j.Logger; import com.shch.shclearing.business.log.CustomerLog; public class JaxbUtil { private static Logger logger = Logger.getLogger(JaxbUtil.class); public static String convertToXml(Object object,String encoding) { String result = null; StringWriter writer = null; try { JAXBContext context = JAXBContext.newInstance(object.getClass()); Marshaller marshaller = context.createMarshaller(); marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,true); marshaller.setProperty(Marshaller.JAXB_ENCODING,encoding); writer = new StringWriter(); marshaller.marshal(object,writer); result = writer.toString(); CustomerLog.customerLog(logger,"对象转换XML成功"); } catch (Exception ex) { logger.error(object.getClass().getName() + "对象转换Xml失败",ex); } finally { if (writer != null) { try { writer.close(); } catch (IOException e) { logger.error("StringWriter对象关闭失败",e); } } } return result; } @SuppressWarnings("unchecked") public static <T> T covertToObject(String xml,Class<T> c) { T t = null; StringReader reader = null; try { JAXBContext context = JAXBContext.newInstance(c); Unmarshaller unmarshaller = context.createUnmarshaller(); reader = new StringReader(xml); t = (T) unmarshaller.unmarshal(reader); CustomerLog.customerLog(logger,"XML转换对象成功"); } catch (Exception ex) { logger.error("Xml转换成对象失败",ex); } finally { if (reader != null) { try { reader.close(); } catch (Exception e) { logger.error("StringReader对象关闭失败",e); } } } return t; } }原文链接:https://www.f2er.com/xml/294202.html