首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Jaxb工具种

2013-09-11 
Jaxb工具类package com.apusic.esb.util.jaxbimport java.io.ByteArrayInputStreamimport java.io.File

Jaxb工具类

package com.apusic.esb.util.jaxb;import java.io.ByteArrayInputStream;import java.io.File;import java.io.InputStream;import java.io.StringWriter;import java.io.UnsupportedEncodingException;import java.util.HashMap;import java.util.Map;import java.util.concurrent.ConcurrentHashMap;import javax.xml.bind.JAXBContext;import javax.xml.bind.JAXBException;import javax.xml.bind.Marshaller;import javax.xml.bind.Unmarshaller;import org.eclipse.core.resources.IFile;import org.eclipse.core.runtime.CoreException;import org.eclipse.core.runtime.NullProgressMonitor;import com.apusic.esb.util.UtilPlugin;/** * JAXB工具,通过使用注解,实现java对象与XML文件的相互转换 * @author TigerlChen */public class JaxbUtil {private static ConcurrentHashMap<Class<?>, JAXBContext> jaxbContextMap = new ConcurrentHashMap<Class<?>,JAXBContext>();/**     * 将JAXB实现对象转换成XML格式的字符串     * @param <T> 这里的类是具体类,不能是接口     * @param tclz 转换对象实例     * @return     */    public static <T> String marshToXmlBinding(Class<T> tclz,T t) throws JAXBException {            JAXBContext jc = null;            if(jaxbContextMap.get(tclz)==null) {                Map<String, String> properties = new HashMap<String, String>();            jc = JAXBContext.newInstance(new Class<?>[]{tclz},properties);            jaxbContextMap.put(tclz, jc);            }else{            jc = jaxbContextMap.get(tclz);            }                        Marshaller u = jc.createMarshaller();            // XML内容格式化            u.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);            StringWriter  sw = new  StringWriter ();            u.marshal(t, sw);            return sw.toString();    }        /**     * 将XML格式的字符串转换成JAXB实现对象     * @param <T> 这里的类是具体类,不能是接口     * @param tclz     * @param file 当目录存在文件不存在时,自动创建;当目录不存在时,将抛异常     * @return     */    public static <T> void marshToXmlBinding(Class<T> tclz, T t, File file) throws JAXBException {        if (tclz == null || file == null) {            return ;        }                JAXBContext jc = null;        if (jaxbContextMap.get(tclz) == null) {            Map<String, String> properties = new HashMap<String, String>();            jc = JAXBContext.newInstance(new Class<?>[] {tclz}, properties);            jaxbContextMap.put(tclz, jc);        } else {            jc = jaxbContextMap.get(tclz);        }        Marshaller u = jc.createMarshaller();        u.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);        u.marshal(t, file);    }        public static <T> void marshToXmlBinding(Class<T> tclz, T t, IFile file) throws JAXBException {        String str = marshToXmlBinding(tclz, t);        ByteArrayInputStream stream = null;        try {            stream = new ByteArrayInputStream(str.getBytes("UTF8"));            if (!file.exists()) {                file.create(stream, true, new NullProgressMonitor());            } else {                file.setContents(stream, true, false, new NullProgressMonitor());            }        } catch (CoreException e) {            UtilPlugin.log(e);        } catch (UnsupportedEncodingException e) {            UtilPlugin.log(e);        }    }    /**     * 将XML格式的字符串转换成JAXB实现对象     * @param <T> 这里的类是具体类,不能是接口     * @param tclz     * @param xmlstr     * @return     */    @SuppressWarnings("unchecked")    public static <T> T unmarshToObjBinding(Class<T> tclz,String xmlstr) {        try {            JAXBContext jc = null;            if(jaxbContextMap.get(tclz)==null) {                Map<String, String> properties = new HashMap<String, String>();            jc = JAXBContext.newInstance(new Class<?>[]{tclz},properties);            jaxbContextMap.put(tclz, jc);            }else{            jc = jaxbContextMap.get(tclz);            }                        Unmarshaller un = jc.createUnmarshaller();            return (T) un.unmarshal(new ByteArrayInputStream(xmlstr.getBytes("utf-8")));                    } catch (JAXBException e) {            UtilPlugin.log(e);        } catch (UnsupportedEncodingException e) {            UtilPlugin.log(e);}return null;    }        /**     * 将XML格式的文件转换成JAXB实现对象     * @param <T>     * @param tclz     * @param file     * @return     */    @SuppressWarnings("unchecked")    public static <T> T unmarshToObjBinding(Class<T> tclz,File file) {        if (tclz == null || file == null || !file.exists()) {            return null;        }                try {            JAXBContext jc = null;            if(jaxbContextMap.get(tclz)==null) {                Map<String, String> properties = new HashMap<String, String>();                jc = JAXBContext.newInstance(new Class<?>[]{tclz},properties);                jaxbContextMap.put(tclz, jc);            }else{                jc = jaxbContextMap.get(tclz);            }                        Unmarshaller un = jc.createUnmarshaller();            return (T) un.unmarshal(file);                    } catch (JAXBException e) {            UtilPlugin.log(e);        }        return null;    }        @SuppressWarnings("unchecked")    public static <T> T unmarshToObjBinding(Class<T> tclz,InputStream inputStream) {        if (tclz == null || inputStream == null) {            return null;        }                try {            JAXBContext jc = null;            if(jaxbContextMap.get(tclz)==null) {                Map<String, String> properties = new HashMap<String, String>();                jc = JAXBContext.newInstance(new Class<?>[]{tclz},properties);                jaxbContextMap.put(tclz, jc);            }else{                jc = jaxbContextMap.get(tclz);            }                        Unmarshaller un = jc.createUnmarshaller();            return (T) un.unmarshal(inputStream);                    } catch (JAXBException e) {            UtilPlugin.log(e);        }        return null;    }        public static <T> T unmarshToObjBinding(Class<T> tclz, IFile file) {        return unmarshToObjBinding(tclz, file.getLocation().toFile());    }}
?
我的异常网推荐解决方案:org.eclipse.core.runtime.CoreException,http://www.myexception.cn/eclipse/org.eclipse.core.runtime.CoreException.html

热点排行