JAXB实现XML和实体对象互转

来源:互联网 发布:天刀杨幂捏脸数据 编辑:程序博客网 时间:2024/06/05 08:58

通过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;}}


原创粉丝点击