xml轉JavaBean

在進行webservice通信的時候,需要解析xml爲一個對象,由於個人也是第一次接觸xml轉對象,於是參考網上的例子寫了一個工具類。

所有jar包支持:

  1. fastjson
  2. dom4j

public class XmlConverBeanUtils {


    /**
     * xml文件轉換對象
     *
     * @param clazz 指定類
     * @param xml   轉換的xml字符串
     * @param <T>
     * @return
     */
    public static <T> T conver(Class<T> clazz, String xml){
        Map map = parse(xml);
        return JSONObject.parseObject(JSON.toJSONString(map),clazz);
    }



    private static Map parse(String xml){
        if(StringUtils.isBlank(xml)){
            throw new NullPointerException("xml不能爲空!");
        }
        return parse(xml,new HashMap<>());
    }


    private static Map parse(String xml, Map<String,Object> map){
        //報文轉成doc對象
        Document doc = null;
        try {
            doc = DocumentHelper.parseText(xml);
        } catch (DocumentException e) {
            e.printStackTrace();
        }
        //獲取根元素,準備遞歸解析這個XML樹
        Element root = doc.getRootElement();
        getCode(root, map);
        return map;
    }

    private static void getCode(Element root, Map<String,Object> map){
        if(root.elements()!=null){
            //如果當前跟節點有子節點,找到子節點
            List<Element> list = root.elements();
            //遍歷每個節點
            for(Element e:list){
                if(e.elements().size()>0){
                    //當前節點不爲空的話,遞歸遍歷子節點;
                    getCode(e, map);
                }
                //如果爲葉子節點,那麼直接把名字和值放入map
                if(e.elements().size()==0){
                    map.put(e.getName(), e.getTextTrim());
                }
            }
        }
    }

}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章