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

C#操作XML

2013-11-13 10:33:47  來源: .NET編程 

  已知有一個XML文件(bookstorexml)如下

  Corets Eva

  

  插入節點

  往節點中插入一個節點

  XmlDocument xmlDoc=new XmlDocument();

  xmlDocLoad(bookstorexml);

  XmlNode root=xmlDocSelectSingleNode(bookstore);//查找

  XmlElement xe=xmlDocCreateElement(book);//創建一個節點

  xeSetAttribute(genre李贊紅);//設置該節點genre屬性

  xeSetAttribute(ISBN);//設置該節點ISBN屬性

  XmlElement xesub=xmlDocCreateElement(title);

  xesubInnerText=CS從入門到精通;//設置文本節點

  xeAppendChild(xesub);//添加到節點中

  XmlElement xesub=xmlDocCreateElement(author);

  xesubInnerText=候捷;

  xeAppendChild(xesub);

  XmlElement xesub=xmlDocCreateElement(price);

  xesubInnerText=;

  xeAppendChild(xesub);

  rootAppendChild(xe);//添加到節點中

  xmlDocSave(bookstorexml);

  結果為

  Corets Eva

  

  候捷

  

  修改節點

  將genre屬性值為李贊紅的節點的genre值改為update李贊紅將該節點的子節點的文本修改為亞勝

  XmlNodeList nodeList=xmlDocSelectSingleNode(bookstore)ChildNodes;//獲取bookstore節點的所有子節點

  foreach(XmlNode xn in nodeList)//遍歷所有子節點

  {

  XmlElement xe=(XmlElement)xn;//將子節點類型轉換為XmlElement類型

  if(xeGetAttribute(genre)==李贊紅)//如果genre屬性值為李贊紅

  {

  xeSetAttribute(genreupdate李贊紅);//則修改該屬性為update李贊紅

  XmlNodeList nls=xeChildNodes;//繼續獲取xe子節點的所有子節點

  foreach(XmlNode xn in nls)//遍歷

  {

  XmlElement xe=(XmlElement)xn;//轉換類型

  if(xeName==author)//如果找到

  {

  xeInnerText=亞勝;//則修改

  break;//找到退出來就可以了

  }

  }

  break;

  }

  }

  xmlDocSave(bookstorexml);//保存

  最後結果為

  Corets Eva

  

  亞勝

  

  刪除節點

  節點的genre屬性刪除 節點

  XmlNodeList xnl=xmlDocSelectSingleNode(bookstore)ChildNodes;

  foreach(XmlNode xn in xnl)

  {

  XmlElement xe=(XmlElement)xn;

  if(xeGetAttribute(genre)==fantasy)

  {

  xeRemoveAttribute(genre);//刪除genre屬性

  }

  else if(xeGetAttribute(genre)==update李贊紅)

  {

  xeRemoveAll();//刪除該節點的全部內容

  }

  }

  xmlDocSave(bookstorexml);

  最後結果為

  Corets Eva

  

  顯示所有數據

  XmlNode xn=xmlDocSelectSingleNode(bookstore);

  XmlNodeList xnl=xnChildNodes;

  foreach(XmlNode xnf in xnl)

  {

  XmlElement xe=(XmlElement)xnf;

  ConsoleWriteLine(xeGetAttribute(genre));//顯示屬性值

  ConsoleWriteLine(xeGetAttribute(ISBN));

  XmlNodeList xnf=xeChildNodes;

  foreach(XmlNode xn in xnf)

  {

  ConsoleWriteLine(xnInnerText);//顯示子節點點文本

  }

  }

  loading

  

  一個通過DataSet操作XML的類(源代碼)

  using System;

  using SystemData;

  using SystemXml;

  using SystemWindowsForms;

  //***************************************

  // 作者: ∮明天去要飯

  // QICQ:

  // Net群:

  //

  //***************************************

  namespace YSTRPCommon

  {

  ///

  /// OperateXmlByDataSet 的摘要說明

  ///

  public class OperateXmlByDataSet

  {

  public OperateXmlByDataSet()

  {

  //

  // TODO: 在此處添加構造函數邏輯

  //

  }

  #region GetDataSetByXml

  ///

  /// 讀取xml直接返回DataSet

  ///

  /// xml文件相對路徑

  ///

  public static DataSet GetDataSetByXml(string strXmlPath)

  {

  try

  {

  DataSet ds = new DataSet();

  dsReadXml(GetXmlFullPath(strXmlPath));

  if(dsTablesCount > )

  {

  return ds;

  }

  return null;

  }

  catch(Exception ex)

  {

  SystemWindowsFormsMessageBoxShow(exToString());

  return null;

  }

  }

  #endregion

  #region GetDataViewByXml

  ///

  /// 讀取Xml返回一個經排序或篩選後的DataView

  ///

  ///

  /// 篩選條件name = 'kgdiwss'

  /// 排序條件Id desc

  ///

  public static DataView GetDataViewByXml(string strXmlPathstring strWherestring strSort)

  {

  try

  {

  DataSet ds = new DataSet();

  dsReadXml(GetXmlFullPath(strXmlPath));

  DataView dv = new DataView(dsTables[]);

  if(strSort != null)

  {

  dvSort = strSort;

  }

  if(strWhere != null)

  {

  dvRowFilter = strWhere;

  }

  return dv;

  }

  catch(Exception)

  {

  return null;

  }

  }

  #endregion

  #region WriteXmlByDataSet

  ///

  /// 向Xml文件插入一行數據

  ///

  /// xml文件相對路徑

  /// 要插入行的列名數組string[] Columns = {nameIsMarried};

  /// 要插入行每列的值數組string[] ColumnValue={明天去要飯false};

  /// 成功返回true否則返回false

  public static bool WriteXmlByDataSet(string strXmlPathstring[] Columnsstring[] ColumnValue)

  {

  try

  {

  //根據傳入的XML路徑得到XSD的路徑兩個文件放在同一個目錄下

  string strXsdPath = strXmlPathSubstring(strXmlPathIndexOf()) + xsd;

  DataSet ds = new DataSet();

  //讀xml架構關系到列的數據類型

  dsReadXmlSchema(GetXmlFullPath(strXsdPath));

  dsReadXml(GetXmlFullPath(strXmlPath));

  DataTable dt = dsTables[];

  //在原來的表格基礎上創建新行

  DataRow newRow = dtNewRow();

  //循環給一行中的各個列賦值

  for(int i=; i< ColumnsLength; i++)

  {

  newRow[Columns[i]] = ColumnValue[i];

  }

  dtRowsAdd(newRow);

  dtAcceptChanges();

  dsAcceptChanges();

  dsWriteXml(GetXmlFullPath(strXmlPath));

  return true;

  }

  catch(Exception)

  {

  return false;

  }

  }

  #endregion

  #region UpdateXmlRow

  ///

  /// 更行符合條件的一條Xml記錄

  ///

  /// XML文件路徑

  /// 列名數組

  /// 列值數組

  /// 條件列名

  /// 條件列值

  ///

  public static bool UpdateXmlRow(string strXmlPathstring[] Columnsstring[] ColumnValuestring strWhereColumnNamestring strWhereColumnValue)

  {

  try

  {

  string strXsdPath = strXmlPathSubstring(strXmlPathIndexOf()) + xsd;

  DataSet ds = new DataSet();

  //讀xml架構關系到列的數據類型

  dsReadXmlSchema(GetXmlFullPath(strXsdPath));

  dsReadXml(GetXmlFullPath(strXmlPath));

  //先判斷行數

  if(dsTables[]RowsCount > )

  {

  for(int i=; i< dsTables[]RowsCount; i++)

  {

  //如果當前記錄為符合Where條件的記錄

  if(dsTables[]Rows[i][strWhereColumnName]ToString()Trim()Equals(strWhereColumnValue))

  {

  //循環給找到行的各列賦新值

  for(int j=; j < ColumnsLength; j++)

  {

  dsTables[]Rows[i][Columns[j]] = ColumnValue[j];

  }

  //更新DataSet

  dsAcceptChanges();

  //重新寫入XML文件

  dsWriteXml(GetXmlFullPath(strXmlPath));

  return true;

  }

  }

  }

  return false;

  }

  catch(Exception)

  {

  return false;

  }

  }

  #endregion

  #region DeleteXmlRowByIndex

  ///

  /// 通過刪除DataSet中iDeleteRow這一行然後重寫Xml以實現刪除指定行

  ///

  ///

  /// 要刪除的行在DataSet中的Index值

  public static bool DeleteXmlRowByIndex(string strXmlPathint iDeleteRow)

  {

  try

  {

  DataSet ds = new DataSet();

  dsReadXml(GetXmlFullPath(strXmlPath));

  if(dsTables[]RowsCount > )

  {

  //刪除符號條件的行

  dsTables[]Rows[iDeleteRow]Delete();

  }

  dsWriteXml(GetXmlFullPath(strXmlPath));

  return true;

  }

  catch(Exception)

  {

  return false;

  }

  }

  #endregion

  #region DeleteXmlRows

  ///

  /// 刪除strColumn列中值為ColumnValue的行

  ///

  /// xml相對路徑

  /// 列名

  /// strColumn列中值為ColumnValue的行均會被刪除

  ///

  public static bool DeleteXmlRows(string strXmlPathstring strColumnstring[] ColumnValue)

  {

  try

  {

  DataSet ds = new DataSet();

  dsReadXml(GetXmlFullPath(strXmlPath));

  //先判斷行數

  if(dsTables[]RowsCount > )

  {

  //判斷行多還是刪除的值多多的for循環放在裡面

  if(ColumnValueLength > dsTables[]RowsCount)

  {

  for(int i=; i < dsTables[]RowsCount; i++)

  {

  for(int j=; j < ColumnValueLength; j++)

  {

  if(dsTables[]Rows[i][strColumn]ToString()Trim()Equals(ColumnValue[j]))

  {

  dsTables[]Rows[i]Delete();

  }

  }

  }

  }

  else

  {

  for(int j=; j < ColumnValueLength; j++)

  {

  for(int i=; i < dsTables[]RowsCount; i++)

  {

  if(dsTables[]Rows[i][strColumn]ToString()Trim()Equals(ColumnValue[j]))

  {

  dsTables[]Rows[i]Delete();

  }

  }

  }

  }

  dsWriteXml(GetXmlFullPath(strXmlPath));

  }

  return true;

  }

  catch(Exception)

  {

  return false;

  }

  }

  #endregion

  #region DeleteXmlAllRows

  ///

  /// 刪除所有行

  ///

  /// XML路徑

  ///

  public static bool DeleteXmlAllRows(string strXmlPath)

  {

  try

  {

  DataSet ds = new DataSet();

  dsReadXml(GetXmlFullPath(strXmlPath));

  //如果記錄條數大於

  if(dsTables[]RowsCount > )

  {

  //移除所有記錄

  dsTables[]RowsClear();

  }

  //重新寫入這時XML文件中就只剩根節點了

  dsWriteXml(GetXmlFullPath(strXmlPath));

  return true;

  }

  catch(Exception)

  {

  return false;

  }

  }

  #endregion

  #region GetXmlFullPath

  ///

  /// 返回完整路徑

  ///

  /// Xml的路徑

  ///

  public static string GetXmlFullPath(string strPath)

  {

  if(strPathIndexOf(:) > )

  {

  return strPath;

  }

  else

  {

  return ApplicationStartupPath + strPath;

  }

  }

  #endregion

  }

  }

  loading

  

  一個通過DataSet操作XML的類

  這段時間寫的項目每次都要用到XML保存一些配置而每次操作XML都覺得挺麻煩沒有數據庫那麼順手後來發現用DataSet操作XML很方便而且靈活性比較好於是寫了一個操作XML的類用來應付一般的XML操作(源碼下載附件)

   基本思路

  其實用DataSet操作XML歸根到底就是對DataSet裡的表格列等進行操作然後用DataSet裡的東西重新寫到XML中從而實現編輯XML的目的如果再配合上xsd文件的話那效果更佳

   程序詳解

  () XML文件內容

  本類操作的XML和生成的XML格式是一樣的如下

  _xmlDBxsd>

   程序員

  

  開發B/S結構程序

  c#等

  建國路XXX

  

  false

  

  c#程序員

  

  開發B/S結構程序

  c#等

  建國路XXX

  

  false

  然後點擊XML文件右下角的數據即可看到熟悉的表格形式在表格的任意位置上單擊右鍵選擇創建架構將會生成一個xsd文件該文件用來定義XML各列的類型其內容如下(點擊查看代碼附件)

  _xmlDBxsd xmlns:mstns=_xmlDBxsdxmlns=_xmlDBxsd xmlns:xs= xmlns:msdata=urn:schemasmicrosoftcom:xmlmsdataattributeFormDefault=qualified elementFormDefault=qualified> msdata:Locale=zhCN msdata:EnforceConstaints=False>?msdata:AutoIncrement=true msdata:AutoIncrementStep=msdata:AutoIncrementSeed= />

  注意如果想像數據庫一樣有一個自動增長的ID字段則可以這樣操作

  首先在XML中添加一個元素這樣生成xsd的時候就會有一個ID段xsd中選中ID這一列在右邊的屬性中AutoIncrementSeedAutoIncrementStep分別設置為這樣ID就會從開始以步長為自動增長

  以上代碼如果看不懂並不要緊因為我們可以通過DataSet來生成這種格式的內容接下來將開始操作XML

  () 處理XML文件路徑

  這裡主要是對傳入的XML路徑進行處理如果傳入的是相對路徑則返回完整路徑如果傳入的是完整路徑則不做處理直接返回方法如下

  #region GetXmlFullPath

  ///

  /// 返回完整路徑

  ///

  /// Xml的路徑

  ///

  public static string GetXmlFullPath(string strPath)

  {

  //如果路徑中含有:符號則認定為傳入的是完整路徑

  if(strPathIndexOf(:) > )

  {

  return strPath;

  }

  else

  {

  //返回完整路徑

  return SystemWebHttpContextCurrentServerMapPath(strPath);

  }

  }

  #endregion

  () 讀取記錄

  讀取XML的數據到DataSet中的方法為

  #region GetDataSetByXml

  ///

  /// 讀取xml直接返回DataSet

  ///

  /// xml文件相對路徑

  ///

  public static DataSet GetDataSetByXml(string strXmlPath)

  {

  try

  {

  DataSet ds = new DataSet();

  //讀取XML到DataSet

  dsReadXml(GetXmlFullPath(strXmlPath));

  if(dsTablesCount > )

  {

  return ds;

  }

  return null;

  }

  catch(Exception)

  {

  return null;

  }

  }

  #endregion

  以上方法將得到一個DataSet裡面保存的是全部XML記錄的信息而且沒有經過任何處理但很多時候我們需要的只是一些滿足條件的記錄這時需要用以下方法得到

  #region GetDataViewByXml

  /// 〈summary〉

  /// 讀取Xml返回一個經排序或篩選後的DataView

  /// 〈/summary〉

  /// 〈param name=strXmlPath〉〈/param〉

  /// 〈param name=strWhere〉篩選條件name = 'kgdiwss'〈/param〉

  /// 〈param name=strSort〉排序條件Id desc〈/param〉

  /// 〈returns〉〈/returns〉

  public static DataView GetDataViewByXml(string strXmlPathstring strWherestring strSort)

  {

  try

  {

  DataSet ds = new DataSet();

  dsReadXml(GetXmlFullPath(strXmlPath));

  //創建DataView來完成排序或篩選操作

  DataView dv = new DataView(dsTables[]);

  if(strSort != null)

  {

  //對DataView中的記錄進行排序

  dvSort = strSort;

  }

  if(strWhere != null)

  {

  //對DataView中的記錄進行篩選找到我們想要的記錄

  dvRowFilter = strWhere;

  }

  return dv;

  }

  catch(Exception)

  {

  return null;

  }

  }

  #endregion

  () 插入記錄

  到現在為止我們已經可以隨意讀取XML中的記錄接下來來實現寫入XML的操作方法如下

  #region WriteXmlByDataSet

  /// 〈summary〉

  /// 向Xml文件插入一行數據

  /// 〈/summary〉

  /// 〈param name=strXmlPath〉xml文件相對路徑〈/param〉

  /// 〈param name=Columns〉要插入行的列名數組string[] Columns = {nameIsMarried};〈/param〉

  /// 〈param name=ColumnValue〉要插入行每列的值數組string[] ColumnValue={kgdiwssfalse};〈/param〉

  /// 〈returns〉成功返回true否則返回false〈/returns〉

  public static bool WriteXmlByDataSet(string strXmlPathstring[] Columnsstring[] ColumnValue)

  {

  try

  {

  //根據傳入的XML路徑得到XSD的路徑兩個文件放在同一個目錄下string strXsdPath = strXmlPathSubstring(strXmlPathIndexOf()) + xsd;

  DataSet ds = new DataSet();

  //讀xml架構關系到列的數據類型

  dsReadXmlSchema(GetXmlFullPath(strXsdPath));

  dsReadXml(GetXmlFullPath(strXmlPath));

  DataTable dt = dsTables[];

  //在原來的表格基礎上創建新行

  DataRow newRow = dtNewRow();

  //循環給 一行中的各個列賦值

  for(int i=; i〈 ColumnsLength; i++)

  {

  newRow[Columns[i]] = ColumnValue[i];

  }

  dtRowsAdd(newRow);

  dtAcceptChanges();

  dsAcceptChanges();

  dsWriteXml(GetXmlFullPath(strXmlPath));

  return true;

  }

  catch(Exception)

  {

  return false;

  }

  }

  #endregion

  可能有的朋友不知道怎麼用這個方法插入數據在後面我將用實例介紹

  () 修改記錄

  修改記錄的方法要傳入的參數相對較多因為修改記錄需要先定位到具體哪一條記錄再修改指定列的值以下為修改XML的方法

  #region UpdateXmlRow

  /// 〈summary〉

  /// 更行符合條件的一條Xml記錄

  /// 〈/summary〉

  /// 〈param name=strXmlPath〉XML文件路徑〈/param〉

  /// 〈param name=Columns〉列名數組〈/param〉

  /// 〈param name=ColumnValue〉列值數組〈/param〉

  /// 〈param name=strWhereColumnName〉條件列名〈/param〉

  /// 〈param name=strWhereColumnValue〉條件列值〈/param〉

  /// 〈returns〉〈/returns〉

  public static bool UpdateXmlRow(string strXmlPathstring[] Columnsstring[] ColumnValuestring strWhereColumnNamestring strWhereColumnValue)

  {

  try

  {

  //同上一方法

  string strXsdPath = strXmlPathSubstring(strXmlPathIndexOf()) + xsd;

  DataSet ds = new DataSet();

  //讀xml架構關系到列的數據類型

  dsReadXmlSchema(GetXmlFullPath(strXsdPath));

  dsReadXml(GetXmlFullPath(strXmlPath));

  //先判斷行數

  if(dsTables[]RowsCount 〉 )

  {

  for(int i=; i〈 dsTables[]RowsCount; i++)

  {

  //如果當前記錄為符合Where條件的記錄if(dsTables[]Rows[i][strWhereColumnName]ToString()Trim()Equals(strWhereColumnValue))

  {

  //循環給找到行的各列賦新值

  for(int j=; j 〈 ColumnsLength; j++)

  {

  dsTables[]Rows[i][Columns[j]] = ColumnValue[j];

  }

  //更新DataSet

  dsAcceptChanges();

  //重新寫入XML文件

  dsWriteXml(GetXmlFullPath(strXmlPath));

  return true;

  }

  }

  }

  return false;

  }

  catch(Exception)

  {

  return false;

  }

  }

  #endregion

  () 刪除記錄

  為了方便刪除記錄提供了三個方法一個可以刪除所有記錄一個刪除符合條件的行還有一個刪除指定Index值的行該Index值和記錄在Data

  Set中的Index值對應刪除所有記錄的方法為

  #region DeleteXmlAllRows

  /// 〈summary〉

  /// 刪除所有行

  /// 〈/summary〉

  /// 〈param name=strXmlPath〉XML路徑〈/param〉

  /// 〈returns〉〈/returns〉

  public static bool DeleteXmlAllRows(string strXmlPath)

  {

  try

  {

  DataSet ds = new DataSet();

  dsReadXml(GetXmlFullPath(strXmlPath));

  //如果記錄條數大於

  if(dsTables[]RowsCount 〉 )

  {

  //移除所有記錄

  dsTables[]RowsClear();

  }

  //重新寫入這時XML文件中就只剩根節點了

  dsWriteXml(GetXmlFullPath(strXmlPath));

  return true;

  }

  catch(Exception)

  {

  return false;

  }

  }

  #endregion

  刪除指定Index值的行的方法為

  #region DeleteXmlRowByIndex

  /// 〈summary〉

  /// 通過刪除DataSet中iDeleteRow這一行然後重寫Xml以實現刪除指定行

  /// 〈/summary〉

  /// 〈param name=strXmlPath〉〈/param〉

  /// 〈param name=iDeleteRow〉要刪除的行在DataSet中的Index值〈/param〉

  public static bool DeleteXmlRowByIndex(string strXmlPathint iDeleteRow)

  {

  try

  {

  DataSet ds = new DataSet();

  dsReadXml(GetXmlFullPath(strXmlPath));

  if(dsTables[]RowsCount 〉 )

  {

  //刪除符號條件的行

  dsTables[]Rows[iDeleteRow]Delete();

  }

  dsWriteXml(GetXmlFullPath(strXmlPath));

  return true;

  }

  catch(Exception)

  {

  return false;

  }

  }

  #endregion

  這裡說一下提供此方法的原因有的時候將XML的內容讀到DataSet然後綁定到DataGrid後由於DataGrid中只有一個模板列而模板列裡又套了表格等許多控件這就使得我們可能無法得到記錄對應的ID值這個時候就可以先得到記錄的Index值(第一行為第二行為以此類推)然後將該Index值傳到方法中就可以將該記錄刪掉

  注意使用該方法的時候綁定到DataGrid上的DataSet和刪除時用的DataSet要為同一個也就是說Index要相同不能有排序不然會誤將記錄

  有時候我們需要刪除符合條件的多行這個時候可以用以下方法實現

  #region DeleteXmlRows

  /// 〈summary〉

  /// 刪除strColumn列中值為ColumnValue的行

  /// 〈/summary〉

  /// 〈param name=strXmlPath〉xml相對路徑〈/param〉

  /// 〈param name=strColumn〉列名〈/param〉

  /// 〈param name=ColumnValue〉strColumn列中值為ColumnValue的行均會被刪除〈/param〉

  /// 〈returns〉〈/returns〉

  public static bool DeleteXmlRows(string strXmlPathstring strColumnstring[] ColumnValue)

  {

  try

  {

  DataSet ds = new DataSet();

  dsReadXml(GetXmlFullPath(strXmlPath));

  //先判斷行數

  if(dsTables[]RowsCount 〉 )

  {

  //判斷行多還是刪除的值多多的for循環放在裡面

  if(ColumnValueLength 〉 dsTables[]RowsCount)

  {

  for(int i=; i 〈 dsTables[]RowsCount; i++)

  {

  for(int j=; j 〈 ColumnValueLength; j++)

  {

  //找到符合條件的行if(dsTables[]Rows[i][strColumn]ToString()Trim()Equals(ColumnValue[j]))

  {

  //刪除行

  dsTables[]Rows[i]Delete();

  }

  }

  }

  }

  else

  {

  for(int j=; j 〈 ColumnValueLength; j++)

  {

  for(int i=; i 〈 dsTables[]RowsCount; i++)

  {

  //找到符合條件的行if(dsTables[]Rows[i][strColumn]ToString()Trim()Equals(ColumnValue[j]))

  {

  //刪除行

  dsTables[]Rows[i]Delete();

  }

  }

  }

  }

  dsWriteXml(GetXmlFullPath(strXmlPath));

  }

  return true;

  }

  catch(Exception)

  {

  return false;

  }

  }

  #endregion

  實例解析

  () 讀取XML

  以下代碼讀取到一個沒有排序和篩選的DataSet

  DataGridDataSource = OperateXmlByDataSetGetDataSetByXml(@xml/xml_xmlDBxml);

  DataGridDataBind();

  以下代碼讀到的數據是經過篩選和排序的

  DataGridDataSource = OperateXmlByDataSetGetDataViewByXml(

  @xml/xml_xmlDBxml //XML文件路徑

  name = '' //條件name列值為

  peopleNum desc); //按peopleNum列降序排列

  DataGridDataBind();

  () 添加記錄

  以下代碼向XML文件中添加了一條記錄同時給個列賦值

  bool b;

  b = OperateXmlByDataSetWriteXmlByDataSet(

  @xml/xml_xmlDBxml //XML文件地址

  new string[]{

  name //姓名字段

  peopleNum //人數字段

  address //地址字段

  description //描述字段

  require //需求字段

  deadLine //結束時間字段

  IsMarried //婚否字段

  }

  new string[]{

  程序員 //姓名字段值

   //人數字段值

  建國路 //地址字段值

  B/S結構程序 //描述字段值

   c#等 //需求字段值

  DateTimeNowToShortDateString() //結束時間字段值

  false //婚否字段值

  });

  如果b返回值為true表示添加成功否則表示添加失敗以上的寫法我用了些偷懶的方法比如我把數組直接放在參數而沒有另外申明事實上你可以另外申明一個數組然後再傳到方法中

  請注意字段在數組中的位置和值在數組中的位置的對應關系

  () 修改記錄

  以下代碼將找到peopleNum列值為的行然後將行的namepeopleNumdescription和IsMarried四個字段的值分別更新成kgdiwss描述true

  bool b;

  b = OperateXmlByDataSetUpdateXmlRow(

  @xml/xml_xmlDBxml

  new string[]{namepeopleNumdescriptionIsMarried}

  new string[]{kgdiwss描述true}

  peopleNum

  );

  返回true表示修改成功否則表示修改失敗

  請特別注意字段類型為邏輯型時賦值用的是true和false而不是

  () 刪除記錄

  以下代碼實現刪除name列值為數組中的值的行

  bool b;

  b = OperateXmlByDataSetDeleteXmlRows(

  @xml/xml_xmlDBxml //XML文件路徑

  name //條件列

  new string[]{

   //條件值

   //條件值

   //條件值

  });

  上面代碼執行成功後name列值為值的行將被刪除

  刪除成功返回true否則返回false

  另外兩種刪除的方法用法比較簡單這裡就不介紹了

  以上就是操作XML的所有方法相信可以滿足很大一部份的使用了然而如果XML中的數據量比較大的話使用以上方法效率可能不高但話又說回來如果數據量比較大的話還是選擇數據庫比較好


From:http://tw.wingwit.com/Article/program/net/201311/14004.html
  • 上一篇文章:

  • 下一篇文章:
  • 推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.