1. 程式人生 > >summer Xing (english name)

summer Xing (english name)

程式碼如下所示,從這個例子中發現了程式碼庫的重要性,如果建立一個自己的程式碼庫,就可以直接從自己的程式碼庫中取出來,這樣需要什麼就可以隨時的取出來.程式碼庫要保證的是規範性和正確性,並且有簡單的模組註釋.

這是今天在網上找到的XML轉json格式的程式碼,人家封裝的很快,節省了我很多時間啊.

import java.io.ByteArrayInputStream;
import java.io.File;
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;

public class Xml2JsonUtil {
	/**
	 * 轉換一個xml格式的字串到json格式
	 * 
	 * @param xml
	 *            xml格式的字串
	 * @return 成功返回json 格式的字串;失敗反回null
	 */
	@SuppressWarnings("unchecked")
	public static  String xml2JSON(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;
		}
	}

	/**
	 * 轉換一個xml格式的字串到json格式
	 * 
	 * @param file
	 *            java.io.File例項是一個有效的xml檔案
	 * @return 成功反回json 格式的字串;失敗反回null
	 */
	@SuppressWarnings("unchecked")
	public static String xml2JSON(File file) {
		JSONObject obj = new JSONObject();
		try {
			SAXBuilder sb = new SAXBuilder();
			Document doc = sb.build(file);
			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;
	}

	// 測試
	public static void main(String[] args) {
		System.out.println(  Xml2JsonUtil.xml2JSON("<MapSet>"
				+ "<MapGroup id='Sheboygan'>" + "<Map>"
				+ "<Type>MapGuideddddddd</Type>"
				+ "<SingleTile>true</SingleTile>" + "<Extension>"
				+ "<ResourceId>ddd</ResourceId>" + "</Extension>" + "</Map>"
				+ "<Map>" + "<Type>ccc</Type>" + "<SingleTile>ggg</SingleTile>"
				+ "<Extension>" + "<ResourceId>aaa</ResourceId>"
				+ "</Extension>" + "</Map>" + "<Extension />" + "</MapGroup>"
				+ "<ddd>" + "33333333" + "</ddd>" + "<ddd>" + "444" + "</ddd>"
				+ "</MapSet>"));
	}
}