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

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

import javax.xml.parsers.DocumentBuilder;

import javax.xml.parsers.DocumentBuilderFactory;

上面是需要導入DocumentBuilderFactory類睦疫;

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

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

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

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

return;

}

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

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

Map successInfo = new HashMap();

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

Orderagg = (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");//業(yè)務號碼

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

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

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

// 拼裝請求參數(shù)

String time = ""; // 時間戳

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時間戳

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 記錄請求地址及參數(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ù)诵原,加密后進行連接,將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("已經(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);//更新上傳成功標志

}

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)提示澄惊,是否上傳成功提示給用戶。

/**

? * 拼接XML字符串

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

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

? * @param text 子節(jié)點內(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字段富雅,用的比較多就提出來個方法掸驱。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市没佑,隨后出現(xiàn)的幾起案子毕贼,更是在濱河造成了極大的恐慌,老刑警劉巖蛤奢,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鬼癣,死亡現(xiàn)場離奇詭異,居然都是意外死亡啤贩,警方通過查閱死者的電腦和手機扣溺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來瓜晤,“玉大人锥余,你說我怎么就攤上這事×÷樱” “怎么了驱犹?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵嘲恍,是天一觀的道長。 經(jīng)常有香客問我雄驹,道長佃牛,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任医舆,我火速辦了婚禮俘侠,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蔬将。我一直安慰自己爷速,他們只是感情好,可當我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布霞怀。 她就那樣靜靜地躺著惫东,像睡著了一般。 火紅的嫁衣襯著肌膚如雪毙石。 梳的紋絲不亂的頭發(fā)上廉沮,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天,我揣著相機與錄音徐矩,去河邊找鬼滞时。 笑死,一個胖子當著我的面吹牛滤灯,可吹牛的內(nèi)容都是我干的漂洋。 我是一名探鬼主播,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼力喷,長吁一口氣:“原來是場噩夢啊……” “哼刽漂!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起弟孟,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤贝咙,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后拂募,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體庭猩,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年陈症,在試婚紗的時候發(fā)現(xiàn)自己被綠了蔼水。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡录肯,死狀恐怖趴腋,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤优炬,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布颁井,位于F島的核電站,受9級特大地震影響蠢护,放射性物質(zhì)發(fā)生泄漏雅宾。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一葵硕、第九天 我趴在偏房一處隱蔽的房頂上張望眉抬。 院中可真熱鬧,春花似錦懈凹、人聲如沸蜀变。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至尊沸,卻和暖如春威沫,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背洼专。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工棒掠, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人屁商。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓烟很,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蜡镶。 傳聞我的和親對象是個殘疾皇子雾袱,可洞房花燭夜當晚...
    茶點故事閱讀 44,864評論 2 354

推薦閱讀更多精彩內(nèi)容

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