摘要:[ASP.NET] 匯出資料庫內容,每一筆存成一個文字檔、XML檔
這一篇要講的是「如何將資料庫的一筆 Record (Row),轉檔輸出為各別的 XML 檔案」。
處理要點:
- XML 檔案的輸出
- DataView 的內容抓取
- DataView 中抓取 資料庫的欄位名稱
- 設定檔案輸出格式為 utf-8
輸出的結果
資料庫的連線與 Gridview 那部份我就不提了「REF」。
程式 Function 的呼叫方式,重構請看「前一篇」
export_xml([DataView], [檔名的前序名稱], [檔案的儲存路徑]);
DataView dv = (DataView)SqlDataSource1.Select(DataSourceSelectArguments.Empty);
string xPrefix = "PID_"; // 檔名的前序名稱
string xPath = "C:\\temp\\"; // 儲存路徑
export_xml(dv, xPrefix, xPath);
程式片段
private static void export_xml(DataView dv, string xPrefix, string xPath) { for (int i = 0; i < dv.Count; i++) // 筆數迴圈 { // 設定儲存的檔案名稱 string xName = xPrefix + Convert.ToString(dv.Table.Rows[i][0]) + ".xml"; string xContent = "<?XML version=\"1.0\" encoding=\"utf-8\"?> \r\n"; xContent += "<XML_ROOT> \r\n"; // dv.Table.Columns[5].Caption // 5th 欄位名稱 // dv.Table.Columns.Count; // 欄位數 for (int j = 0; j < dv.Table.Columns.Count; j++) // 欄位迴圈 { string xTag = dv.Table.Columns[j].Caption; xTag = xTag.ToUpper(); // 將 XML 標籤轉為大寫 // *1 使用欄位索引編號方式 xContent += "<" + xTag + ">" + Convert.ToString(dv.Table.Rows[i][j]) + "</" + xTag + ">" + "\r\n"; // *2 使用欄位名稱方式 //xcontent += "<" + xTag + ">" + Convert.ToString(dv.Table.Rows[i]["ProductName"]) + "<" + xTag + ">" + "\r\n"; } xContent += "</XML_ROOT> \r\n"; // *1 指到目前的專案路徑 // string xFile = HttpContext.Current.Server.MapPath(xFilename).ToString(); // *2 自訂儲存路徑 string xFile = xPath + xName; // 完整檔案路徑與名稱 using (System.IO.FileStream xfs = new System.IO.FileStream(xFile, System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.Write, System.IO.FileShare.ReadWrite)) { // 指定 utf-8 檔案編碼方式 using (System.IO.StreamWriter xWrite = new System.IO.StreamWriter(xfs, System.Text.Encoding.GetEncoding("utf-8"))) { xWrite.Write(xContent); // 將內容寫入到檔案裡 xWrite.Flush(); } } } // 筆數迴圈 } |
程式的邏輯部份:
利用2個 For 迴圈,外迴圈跑筆數、內迴圈跑欄位,再利用字串串接方式將內容與標籤儲存到 字串 xContent 變數中,最後再以 filestream 輸出到檔案中。
我的例子不是嚴謹的XML格式,但是可以清楚的看到,你想要加什麼標籤,想要增加什麼XML的內容,只需利用字串串接的方式,串到 xContent 即可,你可以精準的編修他的內容,就可以達到你要輸出的結果。
而 \r\n 是用來做換行之用的。
~End