生成代碼按鈕事件核心流程
- 取得
DataBaseInfo 物件(含表結構)。
- 依下拉選單決定序列化整個資料庫或單一表 →
GetXMLString() 產生帶縮排 XML。
- 若未選 XSLT 模板:以
<textarea readonly> 直接顯示 XML(免轉義)。
- 若選擇模板:
XslTransform.Load(Server.MapPath(xslt)) 載入樣式表。
XmlDocument.LoadXml(xml) 載入資料 XML。
Transform(doc, null, StringWriter, null) 執行轉換,結果寫入 StringWriter。
- 將 HTML 結果指派給標籤控制項顯示。
GetXMLString 序列化輔助函數
private string GetXMLString(object obj)
{
StringWriter sw = new StringWriter();
XmlTextWriter xw = new XmlTextWriter(sw) { Indentation = 3, IndentChar = ' ', Formatting = Formatting.Indented };
new XmlSerializer(obj.GetType()).Serialize(xw, obj);
xw.Close();
string xml = sw.ToString();
int i = xml.IndexOf("?>");
if (i > 0) xml = xml.Substring(i + 2);
return xml.Trim();
}
XmlSerializer 自動序列化公開可讀寫屬性,遞迴處理物件樹。
- 移除 XML 宣告行,回傳純內容。