package com.hxmy.util;
import java.io.File;
import java.util.Date;
import java.util.List;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Text;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.apache.xerces.dom.DocumentImpl;
public class ExportXml {
//这里传进3个参数
//---1 xml格式的第二层的名字
//---2--1所对应的值
//---3 生成的xml文件存放位置及名字
public static void createDoc(String[] tagName,List tagValue,String filename)
{
try {
Document doc = new DocumentImpl(); //创建xml文档
Element root = doc.createElement("table"); //创建根节点
//List tagValue 其子项是一个object 数组
//遍历值,显示的xml2层节点的个数
for(int i=0; i<tagValue.size(); i++)
{
Element child = createElement(doc,tagName,(Object[])tagValue.get(i));
root.appendChild(child);
}
doc.appendChild(root);
save(doc,filename);
} catch(Exception e){
e.printStackTrace();
}
}
/**
* 创建节点
* @param doc
* @param tagName 节点名称
* @param tagValue 节点值
* @return
*/
public static Element createElement(Document doc,String[] tagName,Object[] tagValue)
{
//生成根节点
Element rootNode = doc.createElement("humanFile");
//循环第一层节点名字
for(int i=0; i<tagName.length; i++)
{
Element tagNode = doc.createElement(tagName[i]);
//添加对应的值
Text textNode = doc.createTextNode((null==tagValue[i])?"":tagValue[i].toString());
tagNode.appendChild(textNode);
rootNode.appendChild(tagNode);
}
return rootNode;
}
/**
* 保存xml文件
* @param doc xml文档
* @param xmlFileName 文件名
*/
public static void save(Document doc,String xmlFileName){
try{
TransformerFactory tfactory = TransformerFactory.newInstance();
Transformer transformer = tfactory.newTransformer();
transformer.setOutputProperty(javax.xml.transform.OutputKeys.ENCODING,"GB2312");
DOMSource source = new DOMSource(doc);
String path=xmlFileName+"//Download//人力资源档案"
+new Date().getYear()+(new Date().getMonth()+1)+new
Date().getDate()+new Date().getTime()+".xml";
//输出
StreamResult result = new StreamResult(new File(path));
transformer.transform(source, result);
}catch(Exception e){
e.printStackTrace();
}
}
}