程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#發現之旅第三講 使用C#開發基於XSLT的代碼生成器(1)(5)

C#發現之旅第三講 使用C#開發基於XSLT的代碼生成器(1)(5)

編輯:關於C語言

在生成代碼按鈕事件處理中,首先根據數據表名列表獲得當前數據 表結構信息對象,並生成XML字符串。若用戶指定了某個數據表則調用GetXMLString函數來生 成該數據表的XML字符串,否則對整個數據結構信息對象生成XML字符串。

若用戶沒有 指定XSLT模板,則生成直接顯示XML代碼的Html代碼。這裡使用textarea元素來顯示XML代碼 ,這樣XML代碼顯示時不需要進行轉義處理。

若用戶指定了XSLT模板名稱,則創建一 個XslTransform對象,使用Load方法從程序目錄中加載該名稱的XSLT模板文件。這裡可以看 出我們的程序需要訪問程序目錄的權限,因此部署這個代碼生成器時是需要配置權限的,使 得程序能訪問程序所在目錄。

程序還創建一個XmlDocument對象,調用它的LoadXml方 法來加載剛剛生成的XML字符串,然後執行XSLT轉換,轉換結果就當作Html代碼准備顯示了。

最後程序根據生成的Html代碼設置到一個標簽控件中。

代碼中還定義了一個 GetXMLString函數,該函數能將一個對象序列化成一個帶縮進的XML字符串。其內部使用了 XmlSerializer對象。使用XmlSerializer對象能很方便的將對象的公開屬性導出為XML文檔。

/// <summary>
/// 將指定對象序列化成XML文檔,然後返回獲得 的XML字符串
/// </summary>
/// <param name="obj"> 對象</param>
/// <returns>XML字符串</returns>
private string GetXMLString( object obj )
{
  System.IO.StringWriter myStr = new System.IO.StringWriter();
  System.Xml.XmlTextWriter writer = new System.Xml.XMLTextWriter( myStr );
  writer.Indentation = 3 ;
   writer.IndentChar = ' ';
  writer.Formatting = System.XML.Formatting.Indented ;
  System.Xml.Serialization.XMLSerializer sc =
    new System.Xml.Serialization.XMLSerializer( obj.GetType() );
  sc.Serialize( writer , obj );
  writer.Close();
  string XML = myStr.ToString();
  int index = XML.IndexOf("?>");
   if( index > 0 )
    xml = XML.Substring( index + 2 );
   return XML.Trim() ;
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved