加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

xml 转对象,对象转xml

发布时间:2020-12-16 02:08:13 所属栏目:百科 来源:网络整理
导读:首先pom 引入jar http://mvnrepository.com/artifact/org.simpleframework/simple-xml/2.7.1 !-- https://mvnrepository.com/artifact/org.simpleframework/simple-xml --dependency groupIdorg.simpleframework/groupId artifactIdsimple-xml/artifactId ve

首先pom 引入jar

http://mvnrepository.com/artifact/org.simpleframework/simple-xml/2.7.1

<!-- https://mvnrepository.com/artifact/org.simpleframework/simple-xml -->
<dependency>
    <groupId>org.simpleframework</groupId>
    <artifactId>simple-xml</artifactId>
    <version>2.7.1</version>
</dependency>
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.simpleframework.xml.Serializer;
import org.simpleframework.xml.core.Persister;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.UnsupportedEncodingException;

public class XMLPaser
{
    public static final Log LOG = LogFactory.getLog(XMLPaser.class);
    /**
     * 解析xml为JavaBean
     *
     * @param xmlString xml
     * @param type      JavaBean
     * @return Object JavaBean
     * @throws UnsupportedEncodingException 
     * @see [类、类#方法、类#成员]
     */
    public static <T> T getDeserializationXml(String xmlString,Class<T> type) throws UnsupportedEncodingException
    {
        LOG.debug(xmlString);
        Object obj = getDeserializationXml(xmlString.getBytes("UTF-8"),type);
        return type.cast(obj);
    }

    public static Object getDeserializationXml(byte[] xmlBytes,Class<?> type)
    {
        Object object = null;
        Serializer serializer = new Persister();
        try
        {
            ByteArrayInputStream is = new ByteArrayInputStream(xmlBytes);
            object = serializer.read(type,is);
        }
        catch (Exception e)
        {
            LOG.error(e);
        }

        return object;
    }

    /**
     * 把字符串中的特殊字符用xml指定的字符代替
     *
     * @param str 需要转换的字符串
     * @return 转换后的字符串
     */
    public static String changeStrToXml(Object str)
    {
        String tempStr = null == str ? "" : str.toString();
        // 转换所有&为&
        tempStr = tempStr.replaceAll("[&]","&");
        // 转换所有<为<
        tempStr = tempStr.replaceAll("[<]","<");
        // 转换所有>为>
        tempStr = tempStr.replaceAll("[>]",">");
        // 转换所有‘为'
        tempStr = tempStr.replaceAll("[']","'");
        // 转换所有"为"
        tempStr = tempStr.replaceAll("["]",""");
        // 转换所有(为(
        tempStr = tempStr.replaceAll("[(]","(");
        // 转换所有)为)
        tempStr = tempStr.replaceAll("[)]",")");
        // 转换所有%为%
        tempStr = tempStr.replaceAll("[%]","%");
        // 转换所有+为+
        tempStr = tempStr.replaceAll("[+]","+");
        // 转换所有-为-
        tempStr = tempStr.replaceAll("[-]","-");

        return tempStr;
    }

    /**
     * 把xml中的的特殊字符用转换回原始数据
     *
     * @param xmlStr 需要转换的字符串
     * @return 转换后的字符串
     */
    public static String changeXmlToStr(String xmlStr)
    {
        if (StringUtil.isNull(xmlStr))
        {
            return "";
        }

        // 转换所有&为&
        xmlStr = xmlStr.replaceAll("&","&");
        // 转换所有<为<
        xmlStr = xmlStr.replaceAll("<","<");
        // 转换所有>为>
        xmlStr = xmlStr.replaceAll(">",">");
        // 转换所有'为‘
        xmlStr = xmlStr.replaceAll("'","'");
        // 转换所有"为"
        xmlStr = xmlStr.replaceAll(""",""");
        // 转换所有(为(
        xmlStr = xmlStr.replaceAll("(","(");
        // 转换所有)为)
        xmlStr = xmlStr.replaceAll(")",")");
        // 转换所有%为%
        xmlStr = xmlStr.replaceAll("%","%");
        // 转换所有+为+
        xmlStr = xmlStr.replaceAll("+","+");
        // 转换所有-为-
        xmlStr = xmlStr.replaceAll("-","-");

        return xmlStr;
    }

    /**
     * 用simple将JavaBean生成xml
     *
     * @param object Object
     * @return String
     * @see [类、类#方法、类#成员]
     */
    public static String getSerializationXml(Object object)
    {
        String xmlString = "";

        if (null == object)
        {
            return xmlString;
        }

        try
        {
            Serializer serializer = new Persister();
            ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(8);

            serializer.write(object,byteArrayOutputStream);
            xmlString = new String(byteArrayOutputStream.toByteArray());
        }
        catch (Exception e)
        {
            LOG.error(e);
        }

        return xmlString;
    }

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读