C#編程實現(xiàn)顯示XML文件
C#語言編程有很多值得學習的地方,這里我們主要介紹C#編程實現(xiàn)顯示XML文件,包括介紹在Web Form中分別增加相應的四個Label等方面。
C#編程實現(xiàn)顯示XML文件
由于XML的易共享性等眾多優(yōu)點,XML技術越來越多地被應用于企業(yè)數(shù)據(jù)處理等領域,如應用于企業(yè)報表、新聞發(fā)布、會計數(shù)據(jù)處理等等。
XML正快速成為從中間層傳送數(shù)據(jù)到桌面的工具,由于XML的數(shù)據(jù)可以通過中間層代理與多種后端(數(shù)據(jù)庫)源集成,目前絕大多數(shù)數(shù)據(jù)庫制造商已全面支持XML技術,提供了各種強大功能處理XML數(shù)據(jù)。
Microsoft的.NET圍繞XML這一核心提供了一個強大而快速的開發(fā)工具——C#,它具有前所未有的高開發(fā)效率,特別是在XML編程方面。
C#提供了許多相關類處理XML數(shù)據(jù),如處理stream的類: XmlReader和XmlWriter; DOM的類:XmlNode、XmlDocument和XmlElement等; Xpath的類:XmlNavigator;XSLT的類:XslTransform。
C#編程實現(xiàn)顯示XML文件內(nèi)容
用C#編程實現(xiàn)顯示XML文件中信息的方法是使用.NET提供的標準類把XML文件內(nèi)容讀入一個StreamReader類對象中,再用 XmlDataDocument類的DataSet讀XML的方法去讀XML信息到DataSet中,DataSet再以DataView的方式賦給一個 Web Form上的DataGrid,最后由DataBind顯示數(shù)據(jù),具體實現(xiàn)代碼如下:
- using System.Xml;
- //處理XML必須加的Namespace,還需在References中加System.XML.Dll
- using System.IO;
- //讀XML文件必須加的Namespace
- 然后在Page_Load中加入如下代碼:
- protected void Page_Load(object sender, EventArgs e){
- string datafile="guest.xml" ;
- //假設XML文件名為guest.xml
- StreamReader tyj=new StreamReader(Server.MapPath(datafile));
- XmlDataDocument datadoc = new XmlDataDocument();
- //創(chuàng)建該對象為了讀取XML
- datadoc.DataSet.ReadXml(tyj);
- //讀取guest.xml文件內(nèi)容
- DataGrid1.DataSource = datadoc.DataSet.Tables[0].DefaultView;
- //設置DataGrid數(shù)據(jù)源
- DataGrid1.DataBind();
- //綁定
- datadoc=null ;
- //釋放資源
- tyj.Close();}
- //釋放StreamReader類,這非常重要,否則下次打開會顯示文件已經(jīng)被使用
- 對應于顯示用的Web Form中DataGrid的功能,我們需要增加下面的函數(shù):
- protected void OnSelectName(object sender,EventArgs e) {
- Session["select_name"]=(string)DataGrid1.SelectedItem.Cells[1].Text.ToString();
- //把選定的 DataGrid某行中的一個單元中的值(Name)存入一個會話變量中,以便下一頁用
- Response.Redirect("xml_manage.aspx");}
- //轉(zhuǎn)到有增加刪除功能的管理頁
- Web Form加入以下代碼:
- <asp:DataGrid id=DataGrid1 runat="server" onselectedindexchanged="OnSelectName" >
- <property name="Columns">
- <asp:buttoncolumn Text="選擇" commandname="Select" />
- </property>
代碼中劃線部分的作用是當按了“選擇”按鈕后,執(zhí)行OnSelectName()中的程序,把選定的 DataGrid中某行中的一個單元中的值(Name)存入一個會話變量中,然后轉(zhuǎn)到下一頁。
增加XML文件內(nèi)容
在Web Form中分別增加相應的四個Label(姓名,來自哪里,Email地址,留言內(nèi)容)和四個TextBox和一個用于提交的Button,并為這button增加如下代碼:
- string datafile = "guest.xml" ;XmlDocument xmldocument = new XmlDocument() ;
- xmldocument.Load(Server.MapPath(datafile)) ;
- //把guest.xml讀到xmldocument中
- DocumentNavigator navigator = new DocumentNavigator(xmldocument) ;
- //最重要的類
- navigator.MoveToDocumentElement() ;
- navigator.Insert(System.Xml.TreePosition.FirstChild,
XmlNodeType.Element, "Guest","","") ;//插入節(jié)點Guest- navigator.Insert(System.Xml.TreePosition.FirstChild,
XmlNodeType.Element, "Name","","") ;- navigator.Insert(System.Xml.TreePosition.FirstChild,
XmlNodeType.Text,"Name","","") ;- navigator.Value=Name.Text ;
- //為該節(jié)點賦值
- navigator.MoveToParent() ;
- //返回父節(jié)點 Guest
- ……
- //使用同類語句,在元素Name下插入另一些元素如Country、E-mail地址和留言等
- xmldocument.Save(Server.MapPath(datafile));
- //最后保存這個XML文檔
- navigator=null ;
- xmldocument=null ;
- //釋放XML文檔,這樣其他程序可以用它
- 上述代碼使用DocumentNavigator類增加元素和內(nèi)容,注意使用后要釋放資源。
- 刪除XML文件內(nèi)容
- 刪除選定記錄,對于你上面選擇的節(jié)點,下面代碼可查找到該節(jié)點并清除選中的信息:
- string datafile = "guest.xml" ;
- XmlDocument xmldocument = new XmlDocument() ;
- xmldocument.Load(Server.MapPath(datafile)) ;
- //把guest.xml讀到xmldocument中
- DocumentNavigator navigator = new DocumentNavigator(xmldocument) ;
- navigator.MoveToDocumentElement() ;
- navigator.Select("/Guests/Guest[Name=""+Session["select_name"]+""]");
- //參數(shù)是XPath
- navigator.RemoveSelected();
- //執(zhí)行刪除
- xmldocument.Save(Server.MapPath(datafile));
- //最后保存這個XML文檔
- navigator=null;
- //釋放類
- xmldocument=null ;
- //釋放XML文檔,這樣其他程序可以用它
C#編程實現(xiàn)顯示XML文件結(jié)論
綜上可知,C#編寫XML應用程序不但快捷而且方便,在編寫ASP.NET數(shù)據(jù)庫應用程序時,用XML文件替代一些小的Table,能減少許多數(shù)據(jù)庫存取連接,也能讓其他網(wǎng)絡程序更易使用這些數(shù)據(jù)。
目前XML的主要瓶頸在于文件系統(tǒng)的讀出或?qū)懭?,故應使用更多?nèi)存和緩存方式,如果信息量不是巨大無比且修改量也較小,而瀏覽量巨大的話,使用XML方法將是很好的選擇;相反,如數(shù)據(jù)量巨大,應考慮使用支持XML的數(shù)據(jù)庫,無論你使用ADO+連接其他數(shù)據(jù)庫,還是使用SQL server,C#中都有直接的類函數(shù)可讓這些數(shù)據(jù)庫中的信息直接和XML交互訪問。
【編輯推薦】