import com.thoughtworks.xstream.XStream; import java.io.ByteArrayInputStream; import java.io.InputStream; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import net.sf.json.JSONObject; import org.jdom.Document; import org.jdom.Element; import org.jdom.input.SAXBuilder; /** * XML工具类 */ public class XmlUtils { /** * 1.XML---》Bean * * @param xml * @param clazz * @param alias * @param <T> * @return */ public static <T> Object XmlToBean(String xml, Class<T> clazz, String alias) { //创建xstream对象 XStream xStream = new XStream(); //将别名与xml名字对应 xStream.alias(alias, clazz); //将字符串类型的xml转换为对象 Object object = xStream.fromXML(xml); return object; } // 2.XML---》JSONObject ( .XML--->JSON字符串-->JSONObject ) public static net.sf.json.JSONObject XmlToJSONObject(String xml) { String jsonStr = xmlToJSONStr(xml); net.sf.json.JSONObject jsonObject = JSONObject.fromObject(jsonStr); return jsonObject; } /** * 3.XML---》JSON字符串 * * @param xml xml格式的字符串 * @return 成功返回json 格式的字符串;失败反回null */ @SuppressWarnings("unchecked") public static String xmlToJSONStr(String xml) { JSONObject obj = new JSONObject(); try { InputStream is = new ByteArrayInputStream(xml.getBytes("utf-8")); SAXBuilder sb = new SAXBuilder(); Document doc = sb.build(is); Element root = doc.getRootElement(); obj.put(root.getName(), iterateElement(root)); return obj.toString(); } catch (Exception e) { e.printStackTrace(); return null; } } /** * 一个迭代方法 * * @param element : org.jdom.Element * @return java.util.Map 实例 */ @SuppressWarnings("unchecked") private static Map iterateElement(Element element) { List jiedian = element.getChildren(); Element et = null; Map obj = new HashMap(); List list = null; for (int i = 0; i < jiedian.size(); i++) { list = new LinkedList(); et = (Element) jiedian.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; } }
转载于:https://my.oschina.net/u/4117203/blog/3039887