package com.bimoku.util.xml;

import java.io.FileOutputStream;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;

import org.apache.commons.collections.map.HashedMap;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;

/**
 * 写xml
 * @author LPM
 *
 */
public class WriteXml {

	/**
	 * 写数据到xml
	 * 
	 * @param datas
	 * @throws Exception
	 */
	public static void witeXml(@SuppressWarnings("rawtypes") Map map,String xmlFilePath)
			throws Exception {
		Document doc = DomHelper.createDomFJ();
		doc.addComment("以utf-8的编码");
		Element books = DomHelper.appendChile("books", doc);
		/* 格式化输出 */
		OutputFormat format = OutputFormat.createPrettyPrint();// 紧缩
		format.setEncoding("utf-8"); // 设置utf-8编码
		Element book = DomHelper.appendChile("book", books);
		
		//构建树形结构
		rescue(book, map);
		
		//输出
		FileOutputStream fos = new FileOutputStream(xmlFilePath);
		XMLWriter writer=new XMLWriter(fos,format);
		//写结构
		writer.write(doc);
		//关闭流
		writer.close();
	}
	
	/**
	 * 迭代
	 * @param root
	 * @param map
	 */
	private static void rescue(Element root,Map map){
		Iterator iterator = map.keySet().iterator();
		while (iterator.hasNext()) {
			String key = (String) iterator.next();
			if(key.equals("read_statis") || key.equals("rating")){
				//解析map
				Element el = DomHelper.appendChile(key, root);
				Map data = (Map) map.get(key);
				//迭代
				rescue(el, data);
			}else{
				String value = (String) map.get(key);
				DomHelper.appendChile(key, root).setText(value);
			}
		}
	}
	
	public static void main(String[] args) throws Exception {
		Map datas = new HashedMap();
		datas.put("url", "aa");
		datas.put("website", "bb");
		datas.put("title", "cc");
		datas.put("title_en", "dd");
		datas.put("press", "ee");
		datas.put("pages", "ff");
		datas.put("date", "gg");
		datas.put("isbn", "hh");
		
		witeXml(datas, "d:/11.xml");
	}
}