因業(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字段富雅,用的比較多就提出來個方法掸驱。