顯示xml文件內容
用c#編程實現顯示xml文件中信息的方法是使用.net提供的標準類把xml文件內容讀入一個streamreader類對象中,再用xmldatadocument類的dataset讀xml的方法去讀xml信息到dataset中,dataset再以dataview的方式賦給一個web form上的datagrid,最后由databind顯示數據,具體實現代碼如下:
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();
//創建該對象為了讀取xml
datadoc.dataset.readxml(tyj);
//讀取guest.xml文件內容
datagrid1.datasource = datadoc.dataset.tables[0].defaultview;
//設置datagrid數據源
datagrid1.databind();
//綁定
datadoc=null ;
//釋放資源
tyj.close();}
//釋放streamreader類,這非常重要,否則下次打開會顯示文件已經被使用
對應于顯示用的web form中datagrid的功能,我們需要增加下面的函數:
protected void onselectname(object sender,eventargs e) {
session["select_name"]=(string)datagrid1.selecteditem.cells[1].text.tostring();
//把選定的 datagrid某行中的一個單元中的值(name)存入一個會話變量中,以便下一頁用
response.redirect("xml_manage.aspx");}
//轉到有增加刪除功能的管理頁
web form加入以下代碼:
?。糰sp:datagrid id=datagrid1 runat="server" onselectedindexchanged="onselectname" >
?。紁roperty name="columns">
<asp:buttoncolumn text="選擇" commandname="select" />
?。?property>
代碼中劃線部分的作用是當按了“選擇”按鈕后,執行onselectname()中的程序,把選定的 datagrid中某行中的一個單元中的值(name)存入一個會話變量中,然后轉到下一頁。
增加xml文件內容
在web form中分別增加相應的四個label(姓名,來自哪里,email地址,留言內容)和四個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","","") ;//插入節點guest
navigator.insert(system.xml.treeposition.firstchild, xmlnodetype.element, "name","","") ;
navigator.insert(system.xml.treeposition.firstchild, xmlnodetype.text,"name","","") ;
navigator.value="/name.text" ;
//為該節點賦值
navigator.movetoparent() ;
//返回父節點 guest
……
//使用同類語句,在元素name下插入另一些元素如country、e-mail地址和留言等
xmldocument.save(server.mappath(datafile));
//最后保存這個xml文檔
navigator=null ;
xmldocument=null ;
//釋放xml文檔,這樣其他程序可以用它
上述代碼使用documentnavigator類增加元素和內容,注意使用后要釋放資源。
刪除xml文件內容
刪除選定記錄,對于你上面選擇的節點,下面代碼可查找到該節點并清除選中的信息:
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"]+""]");
//參數是xpath
navigator.removeselected();
//執行刪除
xmldocument.save(server.mappath(datafile));
//最后保存這個xml文檔
navigator=null;
//釋放類
xmldocument=null ;
//釋放xml文檔,這樣其他程序可以用它
如需將xml文件中所有信息清除,使用“navigator.removechildren();”語句即可實現。
結 論
綜上可知,c#編寫xml應用程序不但快捷而且方便,在編寫asp.net數據庫應用程序時,用xml文件替代一些小的table,能減少許多數據庫存取連接,也能讓其他網絡程序更易使用這些數據。
目前xml的主要瓶頸在于文件系統的讀出或寫入,故應使用更多內存和緩存方式,如果信息量不是巨大無比且修改量也較小,而瀏覽量巨大的話,使用xml方法將是很好的選擇;相反,如數據量巨大,應考慮使用支持xml的數據庫,無論你使用ado+連接其他數據庫,還是使用sql server,c#中都有直接的類函數可讓這些數據庫中的信息直接和xml交互訪問。
新聞熱點
疑難解答