java实体 和 xml相互转换

参考:

https://blog.csdn.net/LookForDream_/article/details/88884316

https://zhuchengzzcc.iteye.com/blog/1838702

核心代码

import java.io.File;
import java.io.FileReader;
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.slf4j.Logger;
import org.slf4j.LoggerFactory;

import dns.rsdnscount.entity.SlaveEntity;
import dns.rsdnscount.entity.SlavesEntity;
 

public class XmlUtils {
 
    private static Logger logger = LoggerFactory.getLogger(XmlUtils.class);
    
    public static void main(String[] args) {
/*        SlavesEntity list=new SlavesEntity();
        
        SlaveEntity ent=new SlaveEntity();
        ent.setHost("master");
        ent.setPort("3306");
        ent.setUserName("user1");
        ent.setRemoteResultPath("/home/user");
        list.getEntitys().add(ent);
        SlaveEntity ent2=new SlaveEntity();
        ent2.setHost("master2");
        ent2.setPort("3306");
        ent2.setUserName("user2");
        ent2.setRemoteResultPath("/home/user2");
        list.getEntitys().add(ent2);
        String xxx=convertToXml(list,"utf-8",true);
        System.out.println(xxx);*/
        try {
            SlavesEntity ents=convertToJava(new File("conf/slaves.xml"), SlavesEntity.class);
        for (SlaveEntity ent : ents.getEntityList()) {
            System.out.println(ent);
        }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        
    }
 
    /**
     * JavaBean转换成xml
     * 
     * @param obj
     * @param encoding
     * @return
     */
    public static String convertToXml(Object obj, String encoding, boolean format) {
        String result = null;
        StringWriter writer = null;
        try {
            JAXBContext context = JAXBContext.newInstance(obj.getClass());
            Marshaller marshaller = context.createMarshaller();
            marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, format);
            marshaller.setProperty(Marshaller.JAXB_ENCODING, encoding);
            writer = new StringWriter();
            marshaller.marshal(obj, writer);
            result = writer.toString();
        } catch (Exception e) {
            logger.error(e.getMessage(), e);
        } finally {
            if (writer != null){
                try {
                    writer.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return result;
    }
 
    /**
     * xml转换成JavaBean
     * 
     * @param xml
     * @param c
     * @return
     */
    @SuppressWarnings("unchecked")
    public static <T> T convertToJava(String xml, Class<T> c) {
        if (xml == null || xml.equals(""))
            return null;
        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);
        } catch (Exception e) {
            logger.error(e.getMessage(), e);
        } finally {
            if (reader != null)
                reader.close();
        }
        return t;
    }
    
    @SuppressWarnings("unchecked")
    public static <T> T convertToJava(File filePath, Class<T> c) throws IOException {
        if (!filePath.exists())
            return null;
        T t = null;
        FileReader reader = null;
        try {
            JAXBContext context = JAXBContext.newInstance(c);
            Unmarshaller unmarshaller = context.createUnmarshaller();
            reader = new FileReader(filePath);
            t = (T) unmarshaller.unmarshal(reader);
        } catch (Exception e) {
            logger.error(e.getMessage(), e);
        } finally {
            if (reader != null)
                reader.close();
        }
        return t;
    }
}

 

实体类

import java.util.LinkedList;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;

@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name="slavesList")
public class SlavesEntity{
    
    @XmlElementWrapper(required=true,name="entitys")
    @XmlElement(name="entity")
    LinkedList<SlaveEntity> entityList=new LinkedList<SlaveEntity>();

    public LinkedList<SlaveEntity> getEntityList() {
        return entityList;
    }

    public void setEntityList(LinkedList<SlaveEntity> entityList) {
        this.entityList = entityList;
    }
    
}

import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlType; @XmlAccessorType(XmlAccessType.FIELD) @XmlType(propOrder = { "host", "port", "userName", "remoteResultPath", }) public class SlaveEntity { String host; String userName; String port; @XmlElement(required=false,name="remoteResultPath") String remoteResultPath; public String getHost() { return host; } public void setHost(String host) { this.host = host; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPort() { return port; } public void setPort(String port) { this.port = port; } public String getRemoteResultPath() { return remoteResultPath; } public void setRemoteResultPath(String remoteResultPath) { this.remoteResultPath = remoteResultPath; } @Override public String toString() { return "SlaveEntity [host=" + host + ", userName=" + userName + ", port=" + port + ", remoteResultPath=" + remoteResultPath + "]"; } }

 

posted @ 2019-06-30 20:00  Nucky_yang  阅读(8720)  评论(0编辑  收藏  举报