`
ld362093642
  • 浏览: 65299 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

java导出xml精简代码

阅读更多
//这里调用 数据是库表查的转为List<JSONObject>
XMLWriter.createXML("data_id,url,country,full_name,intro,service_field,activity,source,u_time,u_user,u_type", itentsite, "info_source_it_ent", export_url, "info_source_it_ent-" + DateUtil.getNowTime4String("yyyyMMddHHmmss") + ".xml");

package yq;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.util.List;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.TransformerFactoryConfigurationError;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import net.sf.json.JSONObject;

import org.w3c.dom.DOMException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Text;

public class XMLWriter {
	
	
	//新建xml文件写入内容
	public static void createXML(String eleNames, List<JSONObject> list, String tableName, String exportPath, String fileName) {
		 try {
			// 1.得到DOM解析器的工厂实例
			DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
			// 2.从DOM工厂里获取DOM解析器
			DocumentBuilder db = dbf.newDocumentBuilder();
			// 3.创建document,即DOM树
			Document docs = db.newDocument();
			
			//创建根节点
			Element docsElement = docs.createElement("root");
			docs.appendChild(docsElement);
			//创建子节点
			Element system_idElement =  docs.createElement("system_id");//系统id
			Text system_id = docs.createTextNode("2");
			system_idElement.appendChild(system_id);
			
			Element table_nameElement =  docs.createElement("table_name");//表名 填对应的编报系统表名
			Text table_name = docs.createTextNode(tableName);
			table_nameElement.appendChild(table_name);
			
			Element datalistElement =  docs.createElement("datalist");//数据列表节点
			
			for (JSONObject json : list) {
				
				Element dataElement = docs.createElement("data");//每条数据的节点
				
				String[] names = eleNames.split(",");
				for (int i = 0; i < names.length; i++) {
					Element lableElement =  docs.createElement(names[i]);
					Text value = docs.createTextNode(json.getString(names[i]));
					lableElement.appendChild(value);
					dataElement.appendChild(lableElement);
				}
				datalistElement.appendChild(dataElement);
				System.out.println(tableName + " export:" + json);
			}
			
			//添加父子关系
			docsElement.appendChild(system_idElement);
			docsElement.appendChild(table_nameElement);
			docsElement.appendChild(datalistElement);
			
			//docs.getDocumentElement().appendChild(docElement);//追加
			
			//保存xml文件
			TransformerFactory transformerFactory=TransformerFactory.newInstance();
			Transformer transformer=transformerFactory.newTransformer();
			DOMSource domSource=new DOMSource(docs);
			
			// 创建保存目录
			File toSave = new File(exportPath + "/");
			if (!toSave.exists()) {
				toSave.mkdirs();
			}
			toSave = new File(exportPath + "/" + fileName);
			//设置编码类型
			transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
			StreamResult result=new StreamResult(new FileOutputStream(toSave));
			
			//把DOM树转换为xml文件
			transformer.transform(domSource, result);
		} catch (DOMException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (TransformerConfigurationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IllegalArgumentException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ParserConfigurationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (TransformerFactoryConfigurationError e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (TransformerException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
}


//最后导出的效果
  <?xml version="1.0" encoding="UTF-8" standalone="no" ?> 
- <root>
  <system_id>2</system_id> 
  <table_name>info_source_it_ent</table_name> 
- <datalist>
- <data>
  <data_id>134217730</data_id> 
  <url>http://weibo.com/ajaxlogin.php?framelogin=1&callback=parent.sinaSSOController.feedBackUrlCallBack</url> 
  <country>美国</country> 
  <full_name>ZDNet</full_name> 
  <intro>ZDNet</intro> 
  <service_field>ZDNet</service_field> 
  <activity>15.0</activity> 
  <source>2</source> 
  <u_time>null</u_time> 
  <u_user>null</u_user> 
  <u_type>1</u_type> 
  </data>
- <data>
  <data_id>134217732</data_id> 
  <url>http://weibo.com/</url> 
  <country>dddf</country> 
  <full_name>dfdf</full_name> 
  <intro>dfdf</intro> 
  <service_field>df</service_field> 
  <activity>12.0</activity> 
  <source>2</source> 
  <u_time>2013-10-27 12:25:51.0</u_time> 
  <u_user>admin</u_user> 
  <u_type>1</u_type> 
  </data>
- <data>
  <data_id>134217733</data_id> 
  <url>http://www.CallBack</url> 
  <country>sdsd</country> 
  <full_name>xcx</full_name> 
  <intro>xcxc</intro> 
  <service_field>xc</service_field> 
  <activity>12.0</activity> 
  <source>2</source> 
  <u_time>2013-10-27 12:26:40.0</u_time> 
  <u_user>admin</u_user> 
  <u_type>1</u_type> 
  </data>
- <data>
  <data_id>134217734</data_id> 
  <url>http://baodu.com/</url> 
  <country>sdsd</country> 
  <full_name>sd</full_name> 
  <intro>sd</intro> 
  <service_field>sd</service_field> 
  <activity>12.0</activity> 
  <source>2</source> 
  <u_time>2013-11-14 10:42:16.0</u_time> 
  <u_user>国飞飞</u_user> 
  <u_type>1</u_type> 
  </data>
- <data>
  <data_id>134217735</data_id> 
  <url>http://www.baidu.com/</url> 
  <country>1</country> 
  <full_name>1</full_name> 
  <intro>1</intro> 
  <service_field>1</service_field> 
  <activity>1.0</activity> 
  <source>2</source> 
  <u_time>2014-05-07 10:48:49.0</u_time> 
  <u_user>admin</u_user> 
  <u_type>1</u_type> 
  </data>
  </datalist>
  </root>
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics