xml 工具类

package com.xyh.weixinpay.util;

import java.io.ByteArrayInputStream;

import java.io.IOException;
import java.io.InputStream;
import java.io.StringReader;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;

import org.dom4j.DocumentHelper;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import com.alibaba.fastjson.JSONObject;

/**
 * xml工具类
 * 
 * @author Administrator
 *
 */
public class XMLUtil {
	/**
	 * xml 转换 javaBean
	 * 
	 * @param clazz
	 * @param xml
	 * @return
	 */
	public static Object xmlToBean(Class<?> clazz, String xml) {
		try {
			JAXBContext jc = JAXBContext.newInstance(clazz);
			Unmarshaller us = jc.createUnmarshaller();
			return us.unmarshal(new StringReader(xml));
		} catch (JAXBException e) {
			e.printStackTrace();
			return null;
		}
	}
    /**
     * xml 转换  json 
     * @param xml
     * @return
     * @throws JDOMException
     * @throws IOException
     */
	public static JSONObject xml2JSON(byte[] xml) throws JDOMException, IOException {
		JSONObject json = new JSONObject();
		InputStream is = new ByteArrayInputStream(xml);
		SAXBuilder sb = new SAXBuilder();
		Document doc = sb.build(is);
		Element root = doc.getRootElement();
		json.put(root.getName(), iterateElement(root));
		return json;
	}

	private static JSONObject iterateElement(Element element) {
		List node = element.getChildren();
		Element et = null;
		JSONObject obj = new JSONObject();
		List list = null;
		for (int i = 0; i < node.size(); i++) {
			list = new LinkedList();
			et = (Element) node.get(i);
			if (et.getTextTrim().equals("")) {
				if (et.getChildren().size() == 0)
					continue;
				if (obj.containsKey(et.getName())) {
					list = (List) obj.get(et.getName());
				}
				list.add(iterateElement(et));
				obj.put(et.getName(), list);
			} else {
				if (obj.containsKey(et.getName())) {
					list = (List) obj.get(et.getName());
				}
				list.add(et.getTextTrim());
				obj.put(et.getName(), list);
			}
		}
		return obj;
	}
	
	private static Map<String,String> xml2Map(String xml) {
        Map<String, String> map = new HashMap<String, String>();
        try {
            org.dom4j.Document doc = DocumentHelper.parseText(xml);//将xml转为dom对象
            org.dom4j.Element root = doc.getRootElement();//获取根节点
            org.dom4j.Element element = root.element("queryRequest");//获取名称为queryRequest的子节点
            List<Element> elements = element.elements();//获取这个子节点里面的所有子元素,也可以element.elements("userList")指定获取子元素
             for (Object obj : elements) {  //遍历子元素
                  element = (org.dom4j.Element) obj;  
                  map.put(element.getName(), element.getTextTrim());
                 System.out.print(element.getName()+"--"+element.getTextTrim());
             } 
        } catch (Exception e) {
            e.printStackTrace();
        }
        return map;
    }
	

}

猜你喜欢

转载自blog.csdn.net/hustxiayu/article/details/79099052