JAVA转XML格式互转,List转XML

package com.mongo.tools;
/**
 * XMLUtil类
 * 提供xml解析 
 */
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Reader;
import java.io.StringReader;
import java.io.StringWriter;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;

import org.dom4j.Document;
import org.dom4j.io.SAXReader;
 
/**
 * 封装了XML转换成object,object转换成XML的代码
 * 
 * @author Steven
 * 
 */
public class XmlUtil {
    /**
     * 将对象直接转换成String类型的 XML输出
     * 
     * @param obj
     * @return
     */
    public static String convertToXml(Object obj) {
        // 创建输出流
        StringWriter sw = new StringWriter();
        try {
            // 利用jdk中自带的转换类实现
            JAXBContext context = JAXBContext.newInstance(obj.getClass());
 
            Marshaller marshaller = context.createMarshaller();
            // 格式化xml输出的格式
            marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,
                    Boolean.TRUE);
            // 将对象转换成输出流形式的xml
            marshaller.marshal(obj, sw);
        } catch (JAXBException e) {
            e.printStackTrace();
        }
        return sw.toString();
    }
 
    /**
     * 将对象根据路径转换成xml文件
     * 
     * @param obj
     * @param path
     * @return
     */
    public static void convertToXml(Object obj, String path) {
        try {
            // 利用jdk中自带的转换类实现
            JAXBContext context = JAXBContext.newInstance(obj.getClass());
 
            Marshaller marshaller = context.createMarshaller();
            // 格式化xml输出的格式
            marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,
                    Boolean.TRUE);
            // 将对象转换成输出流形式的xml
            // 创建输出流
            FileWriter fw = null;
            try {
                fw = new FileWriter(path);
            } catch (IOException e) {
                e.printStackTrace();
            }
            marshaller.marshal(obj, fw);
        } catch (JAXBException e) {
            e.printStackTrace();
        }
    }
 
    @SuppressWarnings("unchecked")
    /**
     * 将String类型的xml转换成对象
     */
    public static Object convertXmlStrToObject(Class clazz, String xmlStr) {
        Object xmlObject = null;
        try {
            JAXBContext context = JAXBContext.newInstance(clazz);
            // 进行将Xml转成对象的核心接口
            Unmarshaller unmarshaller = context.createUnmarshaller();
            StringReader sr = new StringReader(xmlStr);
            xmlObject = unmarshaller.unmarshal(sr);
        } catch (JAXBException e) {
            e.printStackTrace();
        }
        return xmlObject;
    }
 
    @SuppressWarnings("unchecked")
    /**
     * 将file类型的xml转换成对象
     */
    public  Object convertXmlFileToObject(Class clazz, String xmlPath) {
        Object xmlObject = null;
        try {
            JAXBContext context = JAXBContext.newInstance(clazz);
            Unmarshaller unmarshaller = context.createUnmarshaller();
            //FileReader fr = null;
            //InputStream input=null;
            Reader re=null;
            try {
                re = new FileReader(xmlPath);
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            
            xmlObject = unmarshaller.unmarshal(re);
        } catch (JAXBException e) {
            e.printStackTrace();
        }
        return xmlObject;
    }
    
    public void setXml(Object object,String name){
        //User user = new User(1, "Steven", "@sun123", new Date(), 1000.0);
        String path = "D:\\user.xml";
        System.out.println("---将对象转换成File类型的xml Start---");
        XmlUtil.convertToXml(object, path);
        System.out.println("---将对象转换成File类型的xml End---");
    }
    
    public  Object getXml(Class clazz,Object object,String name){
        String path = name;
        object= (Object) XmlUtil.convertXmlStrToObject(clazz, path);
        return object;
    }
    /**
     * 读取xml 将xml转换成对象
     * @param request
     * @param response
     * @param object
     * @return
     */
    
    public static Object getDocument(HttpServletRequest request,Object object) { 
        SAXReader saxReader = null; 
        String xmlStr=null;
        Document doc = null; 
        XmlUtil xml=new XmlUtil();
        try { 
        saxReader = new SAXReader(); 
        doc = saxReader.read(request.getInputStream()); 
         xmlStr = doc.asXML();
        } catch (Exception e) {
         e.printStackTrace();
        }
        return     xml.getXml(object.getClass(), object, xmlStr);
        } 
    
    /**
     * 
     * 将List转换成XML
     * @param obj
     * @param load
     * @return
     * @throws JAXBException
     */
     public static String beanToXml(Object obj,Class load) throws JAXBException{
            JAXBContext context = JAXBContext.newInstance(load);
            Marshaller marshaller = context.createMarshaller();
            marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
            marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");
            StringWriter writer = new StringWriter();
            marshaller.marshal(obj,writer);
            return writer.toString();
        }
     
}

 

你可能感兴趣的:(工具代码,JSON,XML)