java实现对象转换为map、xml字符串转化为map、map转化为xml字符串

全栈工程师开发手册 (作者:栾鹏)
java教程全解

java实现map使用功能函数:对象转换为map、xml字符串转化为map

1、将对象的所有属性转化为map键值对
2、转换对象为map,并忽略某些属性
3、将只有根节点和一级子节点的xml字符串 转换为 Map

测试代码

当前类的名称为MapUtil
	int a=10;
	String b="das";
	public static void main(String[] args) {
		
				MapUtil ob=new MapUtil();
		Map<String, Object> map=object2map(ob);   //将对象所有属性值转化为map
		System.out.println(map);
		
		Map<String, String> map1=object2map(ob,"a");  //将对象排数部分属性后转换为map
		System.out.println(map1);
		
		String xmlstr = "<book><title>Java实例一百例</title><page>基础知识篇</page></book>";  //将简单的只有两级的xml字符串转化为map
		Map<String, String> map2=xml2map(xmlstr);
		System.out.println(map2);
		
		xmlstr = map2xml(map1);   //将map转化为xml
		System.out.println(xmlstr);
	}

将对象的所有属性转化为map键值对

public static Map<String,Object> object2map(Object object){
        Map<String,Object> map = new HashMap<String, Object>();
        Field[] fields = object.getClass().getDeclaredFields();
        for (Field field : fields) {
            Object obj;
            try {
                obj = field.get(object);
                if(obj!=null){
                    map.put(field.getName(), obj);
                }
            } catch (IllegalArgumentException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }
        }
        return map;
    }

转换对象为map,并忽略某些属性

public static Map<String,String> object2map(Object object,String... ignore){
		Map<String,String> tempMap = new LinkedHashMap<String, String>();
		for(Field f : object.getClass().getDeclaredFields()){
			if(!f.isAccessible()){
				f.setAccessible(true);
			}
			boolean ig = false;
			if(ignore!=null && ignore.length>0){
				for(String i : ignore){
					if(i.equals(f.getName())){
						ig = true;
						break;
					}
				}
			}
			if(ig){
				continue;
			}else{
				Object o = null;
				try {
					o = f.get(object);
				} catch (IllegalArgumentException e) {
					e.printStackTrace();
				} catch (IllegalAccessException e) {
					e.printStackTrace();
				}
				tempMap.put(f.getName(), o==null?"":o.toString());
			}
		}
		return tempMap;
	}

只有根节点和一级子节点的xml字符串 转换为 Map

public static Map<String,String> xml2map(String xml){
		try {
			DocumentBuilder documentBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
			Document document = documentBuilder.parse(new ByteArrayInputStream(xml.getBytes()));
			Element element = document.getDocumentElement();
			NodeList nodeList = element.getChildNodes();
			Map<String, String> map = new LinkedHashMap<String, String>();
			for(int i=0;i<nodeList.getLength();i++){
				Element e = (Element) nodeList.item(i);
				map.put(e.getNodeName(),e.getTextContent());
			}
			return map;
		} catch (DOMException e) {
			e.printStackTrace();
		} catch (ParserConfigurationException e) {
			e.printStackTrace();
		} catch (SAXException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return null;
	}

Map转xml数据

public static String map2xml(Map<String,String> param){  
        StringBuffer sb = new StringBuffer();  
        sb.append("<xml>");  
        for (Map.Entry<String,String> entry : param.entrySet()) {   
               sb.append("<"+ entry.getKey() +">");  
               sb.append(entry.getValue());  
               sb.append("</"+ entry.getKey() +">");  
       }    
        sb.append("</xml>");  
        return sb.toString();  
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

腾讯AI架构师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值