由於XML的易共享性等眾多優點XML技術越來越多地被應用於企業數據處理等領域如應用於企業報表新聞發布會計數據處理等等
XML正快速成為從中間層傳送數據到桌面的工具由於XML的數據可以通過中間層代理與多種後端(數據庫)源集成目前絕大多數數據庫制造商已全面支持XML技術提供了各種強大功能處理XML數據
Microsoft的NET圍繞XML這一核心提供了一個強大而快速的開發工具——C#它具有前所未有的高開發效率特別是在XML編程方面
C#提供了許多相關類處理XML數據如處理stream的類 XmlReader和XmlWriter DOM的類XmlNodeXmlDocument和XmlElement等 Xpath的類XmlNavigatorXSLT的類XslTransform
顯示XML文件內容
用C#編程實現顯示XML文件中信息的方法是使用NET提供的標准類把XML文件內容讀入一個StreamReader類對象中再用XmlDataDocument類的DataSet讀XML的方法去讀XML信息到DataSet中DataSet再以DataView的方式賦給一個Web Form上的DataGrid最後由DataBind顯示數據具體實現代碼如下
using SystemXml
//處理XML必須加的Namespace還需在References中加SystemXMLDll
using SystemIO
//讀XML文件必須加的Namespace
然後在Page_Load中加入如下代碼
protected void Page_Load(object sender EventArgs e){
string datafile=guestxml
//假設XML文件名為guestxml
StreamReader tyj=new StreamReader(ServerMapPath(datafile))
XmlDataDocument datadoc = new XmlDataDocument()
//創建該對象為了讀取XML
datadocDataSetReadXml(tyj)
//讀取guestxml文件內容
DataGridDataSource = datadocDataSetTables[]DefaultView
//設置DataGrid數據源
DataGridDataBind()
//綁定
datadoc=null
//釋放資源
tyjClose()}
//釋放StreamReader類這非常重要否則下次打開會顯示文件已經被使用
對應於顯示用的Web Form中DataGrid的功能我們需要增加下面的函數
protected void OnSelectName(object senderEventArgs e) {
Session[select_name]=(string)DataGridSelectedItemCells[]TextToString()
//把選定的 DataGrid某行中的一個單元中的值(Name)存入一個會話變量中以便下一頁用
ResponseRedirect(xml_manageaspx)}
//轉到有增加刪除功能的管理頁
Web Form加入以下代碼
<aspDataGrid id=DataGrid runat=server onselectedindexchanged=OnSelectName >
<property name=Columns>
<aspbuttoncolumn Text=選擇 commandname=Select />
</property>
代碼中劃線部分的作用是當按了選擇按鈕後執行OnSelectName()中的程序把選定的 DataGrid中某行中的一個單元中的值(Name)存入一個會話變量中然後轉到下一頁
增加XML文件內容
在Web Form中分別增加相應的四個Label(姓名來自哪裡Email地址留言內容)和四個TextBox和一個用於提交的Button並為這button增加如下代碼
string datafile = guestxml XmlDocument xmldocument = new XmlDocument()
xmldocumentLoad(ServerMapPath(datafile))
//把guestxml讀到xmldocument中
DocumentNavigator navigator = new DocumentNavigator(xmldocument)
//最重要的類
navigatorMoveToDocumentElement()
navigatorInsert(SystemXmlTreePositionFirstChild XmlNodeTypeElement Guest) //插入節點Guest
navigatorInsert(SystemXmlTreePositionFirstChild XmlNodeTypeElement Name)
navigatorInsert(SystemXmlTreePositionFirstChild XmlNodeTypeTextName)
navigatorValue=NameText
//為該節點賦值
navigatorMoveToParent()
//返回父節點 Guest
……
//使用同類語句在元素Name下插入另一些元素如CountryEmail地址和留言等
xmldocumentSave(ServerMapPath(datafile))
//最後保存這個XML文檔
navigator=null
xmldocument=null
//釋放XML文檔這樣其他程序可以用它
上述代碼使用DocumentNavigator類增加元素和內容注意使用後要釋放資源
刪除XML文件內容
刪除選定記錄對於你上面選擇的節點下面代碼可查找到該節點並清除選中的信息
string datafile = guestxml
XmlDocument xmldocument = new XmlDocument()
xmldocumentLoad(ServerMapPath(datafile))
//把guestxml讀到xmldocument中
DocumentNavigator navigator = new DocumentNavigator(xmldocument)
navigatorMoveToDocumentElement()
navigatorSelect(/Guests/Guest[Name=+Session[select_name]+])
//參數是XPath
navigatorRemoveSelected()
//執行刪除
xmldocumentSave(ServerMapPath(datafile))
//最後保存這個XML文檔
navigator=null
//釋放類
xmldocument=null
//釋放XML文檔這樣其他程序可以用它
如需將XML文件中所有信息清除使用navigatorRemoveChildren()語句即可實現
結 論
綜上可知C#編寫XML應用程序不但快捷而且方便在編寫ASPNET數據庫應用程序時用XML文件替代一些小的Table能減少許多數據庫存取連接也能讓其他網絡程序更易使用這些數據
目前XML的主要瓶頸在於文件系統的讀出或寫入故應使用更多內存和緩存方式如果信息量不是巨大無比且修改量也較小而浏覽量巨大的話使用XML方法將是很好的選擇相反如數據量巨大應考慮使用支持XML的數據庫無論你使用ADO+連接其他數據庫還是使用SQL serverC#中都有直接的類函數可讓這些數據庫中的信息直接和XML交互訪問
From:http://tw.wingwit.com/Article/program/net/201311/11880.html