c#操縱xml

來源:互聯網
上載者:User

由於XML的易共用性等眾多優點,XML技術越來越多地被應用於企業資料處理等領域,如應用於企業報表、新聞發布、會計資料處理等等。
  XML正快速成為從中介層傳送資料到案頭的工具,由於XML的資料可以通過中介層代理與多種後端(資料庫)源整合,目前絕大多數資料庫製造商已全面支援XML技術,提供了各種強大功能處理XML資料。
  Microsoft的.NET圍繞XML這一核心提供了一個強大而快速的開發工具——C#,它具有前所未有的高開發效率,特別是在XML編程方面。
  C#提供了許多相關類處理XML資料,如處理stream的類: XmlReader和XmlWriter; DOM的類:XmlNode、XmlDocument和XmlElement等; Xpath的類:XmlNavigator;XSLT的類:XslTransform。
 

  顯示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加入以下代碼:
  <asp:DataGrid id=DataGrid1 runat="server" onselectedindexchanged="OnSelectName" >
  <property 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();”語句即可實現。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.