在做網頁之間的資料傳輸做交換時,通常會透過XML、JSON來定義資料格式。關於這兩個的
使用方法與定義在此不多做說明。
今天要提到的部分為XML資料的組成,由於最近有處理到一件事,需要將從資料庫撈出來
的資料組成XML資料POST到一Web Service做匯入的動作!因此,在這邊提到如何利用外部
Library jdom API來組成XML,並輸出檔案!
首先,來定義資料的標籤與對應的值,如下:
格式說明如下:
1. 一個名稱對應一個值,如<title>主題1</title>
2. 若搭配一底線則為標籤對應屬性名稱,如<app id="103001001"/>
接著,為組成XML的資料處理過程如下:
定義出Document object,並且產生root's element,如此一來透過addContent一步一步的加進
下層的element。
1. 建立有屬性的標籤樣式,並且在set最後一個屬性的value時,同步檢查該標籤是
否需建立多筆資料,由value以逗點隔開來區別,如下:
<pay type="1" amt="800">方案一:擁有OOXX</pay>
<pay type="2" amt="1200">方案二:擁有XXOO</pay>
2. 建立無屬性的標籤,這個部分就很單純,在此不多做說明,產生樣式如下:
<title>主題1</title>
再來,輸出XML Data及檔案
大致上會使用到的基本功能如上所示,關於資料格式定義,在此以兩個陣列做表示,僅供
參考,純粹範例使用!
使用方法與定義在此不多做說明。
今天要提到的部分為XML資料的組成,由於最近有處理到一件事,需要將從資料庫撈出來
的資料組成XML資料POST到一Web Service做匯入的動作!因此,在這邊提到如何利用外部
Library jdom API來組成XML,並輸出檔案!
首先,來定義資料的標籤與對應的值,如下:
String xmltag[] = {"app_id", "title", "date", "pay_type", "pay_amt", "pay_text"};
String xmlval[] = {"103001001", "主題1", "103-12-29", "1,2", "800,1200", "方案一:擁有OOXX,方案二:擁有XXOO"};
格式說明如下:
1. 一個名稱對應一個值,如<title>主題1</title>
2. 若搭配一底線則為標籤對應屬性名稱,如<app id="103001001"/>
接著,為組成XML的資料處理過程如下:
XMLOutputter fmt = new XMLOutputter();
Format format = Format.getPrettyFormat();
Element root = new Element("Information");
Element tag = null;
Document xmldoc = new Document(root);
for(int i = 0 ; i < xmltag.length ; i++){
String xmltags[] = xmltag[i].split("_");
//1. create => <tag attr1="ooxx" attr2="ooxx">ooxx</tag>
if(xmltags.length > 1){
if(tag == null){
tag = new Element(xmltags[0]);
root.addContent(tag);
tag.setAttribute(xmltags[1], xmlval[i]);
}else{
if(xmltags[1].equals("text")){
//針對最後一個屬性來處理value值透過逗點可能需產生多筆tag
String pays[] = xmlval[i].split(",");
for(int j = 0 ; j < pays.length ; j++){
if(j != 0){
tag = new Element(xmltags[0]);
root.addContent(tag);
}
tag.setAttribute("type", xmlval[3].split(",")[j]);
tag.setAttribute("amt", xmlval[4].split(",")[j]);
tag.addContent(pays[j]);
}
tag = null; //指向null,清掉該變數記錄的address
}else
tag.setAttribute(xmltags[1], xmlval[i]);
}
}else{ //2. create => <tag>ooxx</tag>
tag = new Element(xmltags[0]);
tag.addContent(xmlval[i]);
root.addContent(tag);
tag = null; //指向null,清掉該變數記錄的address
}
}
定義出Document object,並且產生root's element,如此一來透過addContent一步一步的加進
下層的element。
1. 建立有屬性的標籤樣式,並且在set最後一個屬性的value時,同步檢查該標籤是
否需建立多筆資料,由value以逗點隔開來區別,如下:
<pay type="1" amt="800">方案一:擁有OOXX</pay>
<pay type="2" amt="1200">方案二:擁有XXOO</pay>
2. 建立無屬性的標籤,這個部分就很單純,在此不多做說明,產生樣式如下:
<title>主題1</title>
再來,輸出XML Data及檔案
//3. show xml data
fmt.setFormat(format.setEncoding("utf-8"));
//印出資料
System.out.println(fmt.outputString(xmldoc));
//輸出資料
FileWriter fw = new FileWriter("output.xml");
fmt.output(xmldoc, fw);
fw.close();
大致上會使用到的基本功能如上所示,關於資料格式定義,在此以兩個陣列做表示,僅供
參考,純粹範例使用!
留言
張貼留言