`
ld362093642
  • 浏览: 66876 次
  • 性别: 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>
分享到:
评论

相关推荐

    25个让Java程序员更高效的Eclipse插件

    1. FindBugs:这个插件可以帮助开发者发现Java代码中的bug。它通过静态分析代码来检测潜在的错误,如空指针引用、空循环等常见的编程错误。FindBugs使用LesserGNU Public License许可。 2. Checkstyle:Checkstyle...

    数据导入导出v1.0.4

    数据导入导出工具v1.0.4是一个优化过的版本,专注于提高数据处理效率和精简程序体积。这个工具删除了不必要的类和包,通过fatjar工具打包成一个仅约2.9MB的JAR文件,这使得它更加轻便且易于分发。由于它依赖外部Java...

    Oracle9i客户端精简版

    6. **XML支持**:随着Web服务的兴起,Oracle9i加强了对XML的支持,提供了XML DB,使得数据库可以直接处理XML文档,增强了与Web应用的集成。 7. **数据仓库优化**:Oracle9i增强了数据仓库功能,包括快速查询优化器...

    ORACLE9精简

    6. **XML支持**:Oracle 9i增强了对XML的支持,可以将XML文档存储在数据库中,并提供了XML SQL Utility (XSU)进行XML与SQL间的转换,方便了XML数据的处理和查询。 7. **网格计算**:9i是Oracle网格计算战略的一部分...

    .net 4.5 Perst4.NET

    Perst 是一个简单,快速,便捷,面向对象适合Java与.NET的数据库。...●XML的导入/导出功能 ● 支持主-从复制 ● 可以过滤任何集合元素的一个SQL子集 ● 与AspectJ和JAssist AOP工具集成 Perst 支持 .Net 下的Linq。

    jacob所需文件

    JNI允许Java代码调用本地(非Java)代码,这样Java应用就可以直接调用已经存在的COM组件,就像它们是Java类一样。Jacob提供了大量的Java包装类,这些类对应于COM对象,使得开发者可以通过Java的方式来操作COM对象。 ...

    Tomcat5.5配置SSL精简版

    3. **导出公钥证书**:如果需要提交给CA签署,可以使用以下命令导出证书请求: ``` keytool -certreq -keyalg RSA -alias tomcat -file cert_request.csr -keystore server_keystore ``` 然后将 `cert_request....

    一个简单的基于Android读取xls和xlsx文件的例子

    在Android平台上,处理Excel文件是常见的需求,例如数据导入、导出或数据分析。这个例子将讲解如何使用Apache POI库来读取xls和xlsx格式的文件。Apache POI是一个流行的开源Java API,专为Microsoft Office文件格式...

    nutz 使用手册 nutz-1.a.33-manual.pdf

    - **持续改进**:作者承诺不断优化代码质量,增加测试案例,并保证框架的精简性。 - **社区参与**:鼓励用户提交问题报告并参与到项目的贡献中来,共同促进 Nutz 的发展和完善。 #### 五、Nutz 的未来发展 - **...

    FreeMind-Windows-Installer-0.8.1-max

    2. **开源**:FreeMind遵循GNU General Public License(GPL),意味着其源代码对公众开放,任何人都可以查看、修改和分发软件,促进了社区的持续改进和功能扩展。 3. **跨平台**:虽然这里的安装程序是针对Windows...

    FreeMind-Windows-Installer-1.0.1-new.zip

    4. **导入导出**:FreeMind支持多种格式的导入导出,如.MIND、.XML、.TXT等,方便与其他软件共享。 5. **插件扩展**:FreeMind允许安装插件,增加更多功能,如集成其他应用、导出为PDF等。 6. **协作**:虽然Free...

    PLSQL Developer使用手册

    - 包状态和JAVA会话状态:检查程序包的状态以及相关的JAVA会话。 - 查看结果集:查看测试执行后返回的数据。 - 查看DBMS_OUTPUT:输出PL/SQL程序中的调试信息。 - 查看HTP输出:用于调试Web程序的输出。 - 调试:...

    易语言程序免安装版下载

    “在库中的对应命令名”请务必准确填写静态库中公开导出的符号名称(C函数(cdecl)编译后,符号名称通常是在函数名称前加下划线(_));“在库中的对应命令名”以@开头表示以cdecl方式调用,否则表示以默认的stdcall...

Global site tag (gtag.js) - Google Analytics