源碼:數(shù)據(jù)導(dǎo)出XML文件

因業(yè)務(wù)需求要求數(shù)據(jù)以XML格式導(dǎo)出:

import javax.xml.parsers.DocumentBuilder;

import javax.xml.parsers.DocumentBuilderFactory;

上面是需要導(dǎo)入DocumentBuilderFactory類;

//獲取需要導(dǎo)入選擇的數(shù)據(jù)

Object[] aggs = getModel().getSelectedOperaData();

if(aggvos == null || aggvos.length == 0){

MessageDialog.showHintDlg(editor, "提示", "至少選擇一條數(shù)據(jù)!");

return;

}

List errorList = new ArrayList();//保存上傳失敗數(shù)據(jù)號(hào)碼

//上傳成功的數(shù)據(jù)

Map successInfo = new HashMap();

for(int i = 0 ; i < aggs.length ; i++){

Orderagg = (Order)aggs[i];

String setDef6 = agg.getDef6();

//這里判斷是否到出過(guò)xml,setDef6 導(dǎo)出標(biāo)識(shí)字段

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"); // 一級(jí)目錄

Element billhead = doc.createElement("billhead"); // 二級(jí)目錄

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");//業(yè)務(wù)號(hào)碼

billtype.appendChild(billtype_v);

groupcode.appendChild(groupcode_v);

orgcode.appendChild(orgcode_v);

sender.appendChild(sender_v);

bill.appendChild(billhead);

bill.setAttributeNode(id);

// 流水號(hào)

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,模式一樣)

// 獲取發(fā)送地址,自定義項(xiàng)獲取url

url = SysInitQuery.getParaString(equalNull(OrgSettingAccessor.getDefaultOrgUnit()),"IC139");

// 拼裝請(qǐng)求參數(shù)

String time = ""; // 時(shí)間戳

String signature = ""; // MD5加密后的參數(shù)

String account = SysInitQuery.getParaString(equalNull(OrgSettingAccessor.getDefaultOrgUnit()), "IC137");//用戶名

String password = SysInitQuery.getParaString(equalNull(OrgSettingAccessor.getDefaultOrgUnit()),"IC138");//密碼

String clocation2 = "qt";

// 獲取系統(tǒng)UNIX時(shí)間戳

time = Long.toString(System.currentTimeMillis() / 1000L);

//md5加密

signature = md5.Md5(md5.Md5(password) + time).toLowerCase();

String parameter = "";

parameter = url + "?account=" + account + "&time=" + time+ "&signature=" + signature + "&billtype="+ BILLTYPE;

url = url + "?account=" + account + "&time=" + time + "&signature="+ signature + "&billtype=" + BILLTYPE;

// httpurl 記錄請(qǐng)求地址及參數(shù)

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();

// 生產(chǎn)XML文件

pi.writeXMLNew(filename, str, pk_org_id);

successInfo.put(agg.getCode(), agg);

}

}

上面是拼接主要步驟,然后獲取用戶自定義的url,用戶名密碼等數(shù)據(jù),加密后進(jìn)行連接,將xml導(dǎo)出至客戶指定的位置。

/**

* 判斷字符串是否為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("已經(jīng)上傳,不能再次上傳!\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);//更新上傳成功標(biāo)志

}

String messages = "";

if(successInfo.size() > 0){

messages = message.toString().substring(0, message.toString().length() - 1) + "上傳成功!";

}else{

messages = message.toString();

}

//提示

MessageDialog.showHintDlg(editor, "提示", messages);

上面代碼是寫相關(guān)提示,是否上傳成功提示給用戶。

/**

? * 拼接X(jué)ML字符串

? * @param e父節(jié)點(diǎn)

? * @param e1? 子節(jié)點(diǎn)

? * @param text 子節(jié)點(diǎn)內(nèi)容

? * @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字段,用的比較多就提出來(lái)個(gè)方法。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • "use strict";function _classCallCheck(e,t){if(!(e instanc...
    久些閱讀 2,153評(píng)論 0 2
  • 一. Java基礎(chǔ)部分.................................................
    wy_sure閱讀 4,032評(píng)論 0 11
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類相關(guān)的語(yǔ)法,內(nèi)部類的語(yǔ)法,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚_t_閱讀 34,824評(píng)論 18 399
  • JAVA面試題 1、作用域public,private,protected,以及不寫時(shí)的區(qū)別答:區(qū)別如下:作用域 ...
    JA尐白閱讀 1,272評(píng)論 1 0
  • Spring Web MVC Spring Web MVC 是包含在 Spring 框架中的 Web 框架,建立于...
    Hsinwong閱讀 22,968評(píng)論 1 92

友情鏈接更多精彩內(nèi)容