源码:数据导出XML文件

Posted 程序员软件

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了源码:数据导出XML文件相关的知识,希望对你有一定的参考价值。

第一时间关注推送的软件内容 

       因业务需求要求数据以XML格式导出:

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;   

上面是需要导入DocumentBuilderFactory类;

//获取需要导入选择的数据
Object[] aggs = getModel().getSelectedOperaData();
if(aggvos == null || aggvos.length == 0){
   MessageDialog.showHintDlg(editor, "提示", "至少选择一条数据!");
   return;
}
List<String> errorList = new ArrayList<String>();//保存上传失败数据号码
//上传成功的数据
Map<String,Order> successInfo = new HashMap<String,Order>();
for(int i = 0 ; i < aggs.length ; i++){
   Order agg = (Order)aggs[i];
   String setDef6 = agg.getDef6();
   //这里判断是否到出过xml,setDef6 导出标识字段
   if(setDef6 != null && setDef6.equals("Y")){
       errorList.add(aggvo.getCode());
       continue;
   }
   // 拼接xml字符串
   DocumentBuilderFactory fct = DocumentBuilderFactory.newInstance();
   DocumentBuilder buil = null;
   Document doc = null;
   buil = fct.newDocumentBuilder();
   doc = buil.newDocument();
   Element ps = doc.createElement("ufinterface"); // 根目录
   Element bill = doc.createElement("bill"); // 一级目录
   Element billhead = doc.createElement("billhead"); // 二级目录
   Attr id = doc.createAttribute("id");
   Attr billtype = doc.createAttribute("billtype");
   Attr groupcode = doc.createAttribute("groupcode");
   Attr orgcode = doc.createAttribute("orgcode");
   Attr sender = doc.createAttribute("sender");
   String url = "";
   StringBuffer fileBuffer = new StringBuffer();
   if (buil != null) {
       doc.appendChild(ps);
       ps.appendChild(bill);
       ps.setAttributeNode(billtype);
       ps.setAttributeNode(sender);
       ps.setAttributeNode(orgcode);
       ps.setAttributeNode(groupcode);
       Text billtype_v = doc.createTextNode("Item");
       Text sender_v = doc.createTextNode("TOOL");
       Text groupcode_v = doc.createTextNode("0001");
       Text orgcode_v = doc.createTextNode("1126060-2");//业务号码
        billtype.appendChild(billtype_v);
       groupcode.appendChild(groupcode_v);
       orgcode.appendChild(orgcode_v);
       sender.appendChild(sender_v);
       bill.appendChild(billhead);
       bill.setAttributeNode(id);
       // 流水号
        Element ItemID = doc.createElement("ItemID");
        Text code_v = doc.createTextNode(equalNull(agg.getCode()));
       toXML(billhead, ItemID, code_v);
       // 名称
        Element ItemName = doc.createElement("ItemName");
        Text name_v = doc.createTextNode(equalNull(agg.getName()));
        toXML(billhead, ItemName, name_v);
       ......
       //(拼接各种字段toXML,模式一样)
        // 获取发送地址,自定义项获取url
        url = SysInitQuery.getParaString(equalNull(OrgSettingAccessor.getDefaultOrgUnit()),"IC139");
        // 拼装请求参数
        String time = ""; // 时间戳
        String signature = ""; // MD5加密后的参数
        String account = SysInitQuery.getParaString(
               equalNull(OrgSettingAccessor.getDefaultOrgUnit())
               , "IC137");//用户名
       String password = SysInitQuery.getParaString(
               equalNull(OrgSettingAccessor.getDefaultOrgUnit()),
               "IC138");//密码
       String clocation2 = "qt";
        // 获取系统UNIX时间戳
        time = Long.toString(System.currentTimeMillis() / 1000L);
       //md5加密
        signature = md5.Md5(md5.Md5(password) + time).toLowerCase();
        String parameter = "";
        parameter = url + "?account=" + account + "&amp;time=" + time+ "&amp;signature=" + signature + "&amp;billtype="+ BILLTYPE;
       url = url + "?account=" + account + "&time=" + time + "&signature="+ signature + "&billtype=" + BILLTYPE;
       // httpurl 记录请求地址及参数
       Element httpURL = doc.createElement("httpURL");
       Text httpURL_v = doc.createTextNode(parameter);
       toXML(billhead, httpURL, httpURL_v);
       XML_VoucherTranslator.writeXMLFormatString(fileBuffer, doc, -2);
       String filename = name + ".xml";
       String str = fileBuffer.toString();
       // 生产XML文件
       pi.writeXMLNew(filename, str, pk_org_id);
       successInfo.put(agg.getCode(), agg);
   }
}

上面是拼接主要步骤,然后获取用户自定义的url,用户名密码等数据,加密后进行连接,将xml导出至客户指定的位置。


/**
  * 判断字符串是否为null,如果为null,为其赋值"", 如果字符串不为null,直接返回。
  * @date 2018年5月11日11:49:41
  * @author zhuaizhuaihenguai
  * @param obj
  * @return
  */
public static String equalNull(Object data) {
   if (data == null) {
       return "";
   }
   return data.toString();

上面代码就是判断字段是否为空,空值就返回“”;

if(errorList.size() > 0){
   message = message.append("编码:");
   for(int i = 0; i < errorList.size(); i++){
       message = message.append(errorList.get(i));
       if(i + 1 < errorList.size()){
           message = message.append(",");
       }
   }
   message = message.append("已经上传,不能再次上传!\n");
}
if(successInfo.size() > 0){
   message = message.append("编码:");
}
Iterator it = successInfo.keySet().iterator();
Order agg;
while(it.hasNext()){
   agg = successInfo.get((String) it.next());
   message = message.append(agg.getCode()+",");
   agg.setDef6("Y");
   //更新方法
   odel.directlyUpdate(agg);//更新上传成功标志
}
String messages = "";
if(successInfo.size() > 0){
   messages = message.toString().substring(0, message.toString().length() - 1) + "上传成功!";
}else{
   messages = message.toString();
}
//提示
MessageDialog.showHintDlg(editor, "提示", messages);

上面代码是写相关提示,是否上传成功提示给用户。

/**
  * 拼接XML字符串
  * @param e 父节点
  * @param e1 子节点
  * @param text 子节点内容
  * @date 2018年5月11日15:24:13
  * @author zhuaizhuaihenguai
  *
@return
  */
public static void toXML(Element e, Element e1, Text text) {
   e.appendChild(e1);
   e1.appendChild(text);
}

这段代码是拼接xml字段,用的比较多就提出来个方法。


更多知识关注"程序员软件",喜欢文章就关注、点赞、转发吧!

以上是关于源码:数据导出XML文件的主要内容,如果未能解决你的问题,请参考以下文章

怎么使用java导出大数据为xml文件

西门子导出xml怎么看

使用 WPF C# 将我的 SQL 数据库导出为 XML

需要将XML文件数据导出为ex​​cel文件

Excel导出xml时提示“无法保存或者导出XML数据,此工作薄中XML映射不可导出(xml映射随便导的)请问怎么办

小程序各种功能代码片段整理---持续更新