熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

C#中使用XML基於DOM的案例分析

2022-06-13   來源: .NET編程 

  編寫此案例的目的是為了描述在普通的應用程序中如何運用DOM技術以及對上一篇文章《C#中使用XML——實現DOM》中所講述的DOM的相關知識回顧一下本案例將分析一個聯系人應用程序在這裡將XML文檔充當數據庫來使用 所有的聯系人信息存儲在XML文檔中同時在程序中使用DOM對聯系人文檔進行查詢編輯更新等操作具體來說本案例將實現以下功能
  
  . 添加一個新的聯系人
  
  . 修改現有聯系人
  
  . 刪除現有聯系人
  
  . 按姓氏查詢聯系人
  
  . 按名字查詢聯系人
  
  . 將所有聯系人導出到另一個XML文件
  
  . 將聯系人從另一個XML文件導入
  
  以下是程序運行效果圖
  
  應用程序主窗體
   C#中使用XML---基於DOM的案例分析(圖一)
  添加聯系人窗體
   C#中使用XML---基於DOM的案例分析(圖二)
  修改聯系人窗體
  C#中使用XML---基於DOM的案例分析(圖三)
  以下是用於測試程序的XML文件
  
  contactxml 將該文件保存在項目目錄下
  
  <?xml version= encoding=gb?>
  
  <ContactDetails>
  
  <Contact>
  
  <name>
  
  <first>Steven</first>
  
  <last>Perez</last>
  
  </name>
  
  <note>cn;system at ;/note>
  
  </Contact>
  
  <Contact>
  
  <name>
  
  <first>Billoys</first>
  
  <last>Perez</last>
  
  </name>
  
  <note>;system at </note>
  
  </Contact>
  
  <Contact>
  
  <name>
  
  <first>劉</first>
  
  <last>羅鍋</last>
  
  </name>
  
  <note>古代人</note>
  
  </Contact>
  
  </ContactDetails>
  
  contactxml 該文件用於實現導入聯系人功能將該文件隨便保存在一個目錄下然後將保存路徑連同文件名拷貝到主窗體的保存的路徑文本框中再單擊導入按紐即可實現導入功能
  
  <?xml version= encoding=gb?>
  
  <ContactDetails>
  
  <Contact>
  
  <name>
  
  <first>Steven</first>
  
  <last>Perez</last>
  
  </name>
  
  <note>cn;system at ;/note>
  
  </Contact>
  
  <Contact>
  
  <name>
  
  <first>Billoys</first>
  
  <last>Perez</last>
  
  </name>
  
  <note>;system at </note>
  
  </Contact>
  
  <Contact>
  
  <name>
  
  <first>劉</first>
  
  <last>德華</last>
  
  </name>
  
  <note>香港著名藝人工作勤懇同時不忘生活出演電影多部演技已達登峰造極刻畫人物栩栩如生</note>
  
  </Contact>
  
  <Contact>
  
  <name>
  
  <first>揚</first>
  
  <last>震</last>
  
  </name>
  
  <note>重案六組探員為人膽大心細沉著冷靜富有人情味經歷幾次案件後更加成熟在成長中不斷磨練是個真的漢子正應驗那句話成就靠真本事</note>
  
  </Contact>
  
  <Contact>
  
  <name>
  
  <first>季</first>
  
  <last>潔</last>
  
  </name>
  
  <note>重案六組探員富有人情味對揚震早已芳心默許知道為什麼嗎?因為她天生就愛保護別人當她看到揚震被別人用槍指著頭嚇的回不過神來時就對這個真實的男人產生了感覺真可謂巾帼不讓須眉</note>
  
  </Contact>
  
  </ContactDetails>
  
  導出聯系人時在保存的路徑文本框中輸入一個文件路徑程序將在該路徑下創建一個XML文件如果該文件存在於該路徑上程序將對該XML文件進行重寫
  
  為實現以上所述所有功能我專門編寫了一個類來封裝實現代碼該類代碼如下
  
  namespace ContactApplication
  
  {
  
  using System;
  
  using SystemXml;
  
  using SystemText;
  
  using SystemData;
  
  using SystemWindowsForms;
  
  using SystemComponentModel;
  
  using SystemCollections;
  
  /// <summary>
  
  /// Contact 聯系人
  
  /// </summary>
  
  public class Contact : IDisposable
  
  {
  
  private string xmlPath;
  
  private XmlDocument xmlDoc;
  
  private XmlNode selectNode;
  
  private string firstName;
  
  private string lastName;
  
  private string note;
  
  #region Contact 構造器
  
  /// <summary>
  
  /// 默認構造器
  
  /// </summary>
  
  public Contact()
  
  {
  
  thisxmlPath = //Contactxml;
  
  thisselectNode = null;
  
  thisxmlDoc = new XmlDocument();
  
  thisxmlDocLoad(thisxmlPath);
  
  thisfirstName = stringEmpty;
  
  thislastName = stringEmpty;
  
  thisnote = stringEmpty;
  
  }
  
  /// <summary>
  
  /// 使用姓氏名字個人信息構造一個聯系人對象
  
  /// </summary>
  
  /// <param name=firstName>姓氏</param>
  
  /// <param name=lastName>名字</param>
  
  /// <param name=note>個人信息</param>
  
  public Contact(string firstName string lastName string note)
  
  {
  
  thisxmlPath = //Contactxml;
  
  thisselectNode = null;
  
  thisxmlDoc = new XmlDocument();
  
  thisxmlDocLoad(thisxmlPath);
  
  thisfirstName = firstName;
  
  thislastName = lastName;
  
  thisnote = note;
  
  }
  
  #endregion
  
  #region Contact 資源釋放方法
  
  /// <summary>
  
  /// 清理該對象所有正在使用的資源
  


  /// </summary>
  
  public void Dispose()
  
  {
  
  thisDispose(true);
  
  GCSuppressFinalize(this);
  
  }
  
  /// <summary>
  
  /// 釋放該對象的實例變量
  
  /// </summary>
  
  /// <param name=disposing></param>
  
  protected virtual void Dispose(bool disposing)
  
  {
  
  if (!disposing)
  
  return;
  
  if (thisxmlPath != null)
  
  thisxmlPath = null;
  
  if (thisxmlDoc != null)
  
  thisxmlDoc = null;
  
  if (thisselectNode != null)
  
  thisselectNode = null;
  
  if (thisfirstName != null)
  
  thisfirstName = null;
  
  if (thislastName != null)
  
  thislastName = null;
  
  if (thisnote != null)
  
  thisnote = null;
  
  }
  
  #endregion
  
  #region Contact 屬性
  
  /// <summary>
  
  /// 姓氏
  
  /// </summary>
  
  public string FirstName
  
  {
  
  get
  
  {
  
  return thisfirstName;
  
  }
  
  set
  
  {
  
  thisfirstName = value;
  
  }
  
  }
  
  /// <summary>
  
  /// 名字
  
  /// </summary>
  
  public string LastName
  
  {
  
  get
  
  {
  
  return thislastName;
  
  }
  
  set
  
  {
  
  thislastName = value;
  
  }
  
  }
  
  /// <summary>
  
  /// 個人信息


From:http://tw.wingwit.com/Article/program/net/201311/11459.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.