[ASP.NET] 匯出資料庫內容,每一筆存成一個文字檔、XML檔

摘要:[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