//这里调用 数据是库表查的转为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>