XML與Bean之間的互換


1.

public final class XMLBeanUtils {
    /**
     * 將Bean轉換為XML
     * 
     * @param clazzMap
     *            別名-類名映射Map
     * @param bean
     *            要轉換為xml的bean對象
     * @return XML字符串
     * @throws IOException
     */
    @SuppressWarnings("unchecked")
    public static String bean2xml(Map<String, Class> clazzMap, Object bean) throws IOException {
        XStream xstream = new XStream();
        Map.Entry<String, Class> m  = null;
        for (Iterator it = clazzMap.entrySet().iterator(); it.hasNext();) {
            m = (Map.Entry<String, Class>) it.next();
            xstream.alias(m.getKey(), m.getValue());
        }
        String xml = xstream.toXML(bean);

        Document document = null;
        try {
            document = DocumentHelper.parseText(xml.replaceAll("__", "_"));

        } catch (DocumentException e) {
            System.out.println(e.getMessage());
            e.printStackTrace();
        }
        StringWriter writer = new StringWriter();
        OutputFormat format = OutputFormat.createPrettyPrint();
        XMLWriter xmlwriter = new XMLWriter(writer, format);
        try {
            xmlwriter.write(document);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return (writer.toString()).replaceAll("&amp;#x000A;", "&#x000A;").replaceAll("&", "&amp;");

    }

    /**
     * 將XML轉換為Bean
     * 
     * @param clazzMap
     *            別名-類名映射Map
     * @param xml
     *            要轉換為bean對象的xml字符串
     * @return Java Bean對象
     */
    public static Object xml2Bean(Map<String, Class> clazzMap, String xml) {
        XStream xstream = new XStream();
        xstream.setMode(XStream.NO_REFERENCES);
        for (Iterator it = clazzMap.entrySet().iterator(); it.hasNext();) {
            Map.Entry<String, Class> m = (Map.Entry<String, Class>) it.next();
            xstream.alias(m.getKey(), m.getValue());
        }
        Object bean = null;
        try {
            bean = xstream.fromXML(xml);
        } catch (Exception e) {
            bean = e;
        }
        return bean;
    }

    /**
     * 獲取XStream對象
     * 
     * @param clazzMap
     *            別名-類名映射Map
     * @return XStream對象
     */
    public static XStream getXStreamObject(Map<String, Class> clazzMap) {
        XStream xstream = new XStream();
        for (Iterator it = clazzMap.entrySet().iterator(); it.hasNext();) {
            Map.Entry<String, Class> m = (Map.Entry<String, Class>) it.next();
            xstream.alias(m.getKey(), m.getValue());
        }
        return xstream;
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM