C#操作XML(讀XML,寫XML,更新,刪除節點,與dataset結合等)

C#操作XML(讀XML,寫XML,更新,刪除節點,與dataset結合等)
2008-06-10 00:18

已知有一個XML文件(bookstore.xml)如下: Corets, Eva 5.95 1、插入節點 往節點中插入一個節點:

XmlDocument xmlDoc=new XmlDocument(); xmlDoc.Load("bookstore.xml"); XmlNode root=xmlDoc.SelectSingleNode("bookstore");//查找 XmlElement xe1=xmlDoc.CreateElement("book");//創建一個節點 xe1.SetAttribute("genre","李贊紅");//設置該節點genre屬性 xe1.SetAttribute("ISBN","2-3631-4");//設置該節點ISBN屬性

XmlElement xesub1=xmlDoc.CreateElement("title"); xesub1.InnerText="CS從入門到精通";//設置文本節點 xe1.AppendChild(xesub1);//添加到節點中 XmlElement xesub2=xmlDoc.CreateElement("author"); xesub2.InnerText="候捷"; xe1.AppendChild(xesub2); XmlElement xesub3=xmlDoc.CreateElement("price"); xesub3.InnerText="58.3"; xe1.AppendChild(xesub3);

root.AppendChild(xe1);//添加到節點中 xmlDoc.Save("bookstore.xml"); 結果爲: Corets, Eva 5.95 候捷 58.3 2、修改節點: 將genre屬性值爲“李贊紅“的節點的genre值改爲“update李贊紅”,將該節點的子節點的文本修改爲“亞勝”。

XmlNodeList nodeList=xmlDoc.SelectSingleNode("bookstore").ChildNodes;//獲取bookstore節點的所有子節點 foreach(XmlNode xn in nodeList)//遍歷所有子節點 { XmlElement xe=(XmlElement)xn;//將子節點類型轉換爲XmlElement類型 if(xe.GetAttribute("genre")=="李贊紅")//如果genre屬性值爲“李贊紅” { xe.SetAttribute("genre","update李贊紅");//則修改該屬性爲“update李贊紅”

XmlNodeList nls=xe.ChildNodes;//繼續獲取xe子節點的所有子節點 foreach(XmlNode xn1 in nls)//遍歷 { XmlElement xe2=(XmlElement)xn1;//轉換類型 if(xe2.Name=="author")//如果找到 { xe2.InnerText="亞勝";//則修改 break;//找到退出來就可以了 } } break; } }

xmlDoc.Save("bookstore.xml");//保存。 最後結果爲: Corets, Eva 5.95 亞勝 58.3 3、刪除節點 節點的genre屬性,刪除 節點。

XmlNodeList xnl=xmlDoc.SelectSingleNode("bookstore").ChildNodes;

foreach(XmlNode xn in xnl) { XmlElement xe=(XmlElement)xn; if(xe.GetAttribute("genre")=="fantasy") { xe.RemoveAttribute("genre");//刪除genre屬性 } else if(xe.GetAttribute("genre")=="update李贊紅") { xe.RemoveAll();//刪除該節點的全部內容 } } xmlDoc.Save("bookstore.xml"); 最後結果爲: Corets, Eva 5.95 4、顯示所有數據。

XmlNode xn=xmlDoc.SelectSingleNode("bookstore");

XmlNodeList xnl=xn.ChildNodes;

foreach(XmlNode xnf in xnl) { XmlElement xe=(XmlElement)xnf; Console.WriteLine(xe.GetAttribute("genre"));//顯示屬性值 Console.WriteLine(xe.GetAttribute("ISBN"));

XmlNodeList xnf1=xe.ChildNodes; foreach(XmlNode xn2 in xnf1) { Console.WriteLine(xn2.InnerText);//顯示子節點點文本 } } loading... 2005-10-3 一個通過DataSet操作XML的類(源代碼)

using System; using System.Data; using System.Xml; using System.Windows.Forms;

//*************************************** // 作者: ∮明天去要飯 // QICQ: 305725744 // .Net羣: 6370988 // http://blog.csdn.net/kgdiwss //***************************************

namespace YSTRP.Common { /// /// OperateXmlByDataSet 的摘要說明。 /// public class OperateXmlByDataSet { public OperateXmlByDataSet() { // // TODO: 在此處添加構造函數邏輯 // }

#region GetDataSetByXml /// /// 讀取xml直接返回DataSet /// /// xml文件相對路徑 /// public static DataSet GetDataSetByXml(string strXmlPath) { try { DataSet ds = new DataSet(); ds.ReadXml(GetXmlFullPath(strXmlPath)); if(ds.Tables.Count > 0) { return ds; } return null; } catch(Exception ex) { System.Windows.Forms.MessageBox.Show(ex.ToString()); return null; } } #endregion #region GetDataViewByXml /// /// 讀取Xml返回一個經排序或篩選後的DataView /// /// /// 篩選條件,如:"name = 'kgdiwss'" /// 排序條件,如:"Id desc" /// public static DataView GetDataViewByXml(string strXmlPath,string strWhere,string strSort) { try { DataSet ds = new DataSet(); ds.ReadXml(GetXmlFullPath(strXmlPath)); DataView dv = new DataView(ds.Tables[0]); if(strSort != null) { dv.Sort = strSort; } if(strWhere != null) { dv.RowFilter = strWhere; } return dv; } catch(Exception) { return null; } } #endregion

#region WriteXmlByDataSet /// /// 向Xml文件插入一行數據 /// /// xml文件相對路徑 /// 要插入行的列名數組,如:string[] Columns = {"name","IsMarried"}; /// 要插入行每列的值數組,如:string[] ColumnValue={"明天去要飯","false"}; /// 成功返回true,否則返回false public static bool WriteXmlByDataSet(string strXmlPath,string[] Columns,string[] ColumnValue) { try { //根據傳入的XML路徑得到.XSD的路徑,兩個文件放在同一個目錄下 string strXsdPath = strXmlPath.Substring(0,strXmlPath.IndexOf(".")) + ".xsd";

DataSet ds = new DataSet(); //讀xml架構,關係到列的數據類型 ds.ReadXmlSchema(GetXmlFullPath(strXsdPath)); ds.ReadXml(GetXmlFullPath(strXmlPath)); DataTable dt = ds.Tables[0]; //在原來的表格基礎上創建新行 DataRow newRow = dt.NewRow();

//循環給一行中的各個列賦值 for(int i=0; i< Columns.Length; i++) { newRow[Columns[i]] = ColumnValue[i]; } dt.Rows.Add(newRow); dt.AcceptChanges(); ds.AcceptChanges();

ds.WriteXml(GetXmlFullPath(strXmlPath)); return true; } catch(Exception) { return false; } } #endregion

#region UpdateXmlRow /// /// 更行符合條件的一條Xml記錄 /// /// XML文件路徑 /// 列名數組 /// 列值數組 /// 條件列名 /// 條件列值 /// public static bool UpdateXmlRow(string strXmlPath,string[] Columns,string[] ColumnValue,string strWhereColumnName,string strWhereColumnValue) { try { string strXsdPath = strXmlPath.Substring(0,strXmlPath.IndexOf(".")) + ".xsd";

DataSet ds = new DataSet(); //讀xml架構,關係到列的數據類型 ds.ReadXmlSchema(GetXmlFullPath(strXsdPath)); ds.ReadXml(GetXmlFullPath(strXmlPath));

//先判斷行數 if(ds.Tables[0].Rows.Count > 0) { for(int i=0; i< ds.Tables[0].Rows.Count; i++) { //如果當前記錄爲符合Where條件的記錄 if(ds.Tables[0].Rows[i][strWhereColumnName].ToString().Trim().Equals(strWhereColumnValue)) { //循環給找到行的各列賦新值 for(int j=0; j < Columns.Length; j++) { ds.Tables[0].Rows[i][Columns[j]] = ColumnValue[j]; } //更新DataSet ds.AcceptChanges(); //重新寫入XML文件 ds.WriteXml(GetXmlFullPath(strXmlPath)); return true; } }

} return false; } catch(Exception) { return false; } } #endregion

#region DeleteXmlRowByIndex /// /// 通過刪除DataSet中iDeleteRow這一行,然後重寫Xml以實現刪除指定行 /// /// /// 要刪除的行在DataSet中的Index值 public static bool DeleteXmlRowByIndex(string strXmlPath,int iDeleteRow) { try { DataSet ds = new DataSet(); ds.ReadXml(GetXmlFullPath(strXmlPath)); if(ds.Tables[0].Rows.Count > 0) { //刪除符號條件的行 ds.Tables[0].Rows[iDeleteRow].Delete(); } ds.WriteXml(GetXmlFullPath(strXmlPath)); return true; } catch(Exception) { return false; } } #endregion

#region DeleteXmlRows /// /// 刪除strColumn列中值爲ColumnValue的行 /// /// xml相對路徑 /// 列名 /// strColumn列中值爲ColumnValue的行均會被刪除 /// public static bool DeleteXmlRows(string strXmlPath,string strColumn,string[] ColumnValue) { try { DataSet ds = new DataSet(); ds.ReadXml(GetXmlFullPath(strXmlPath));

//先判斷行數 if(ds.Tables[0].Rows.Count > 0) { //判斷行多還是刪除的值多,多的for循環放在裏面 if(ColumnValue.Length > ds.Tables[0].Rows.Count) { for(int i=0; i < ds.Tables[0].Rows.Count; i++) { for(int j=0; j < ColumnValue.Length; j++) { if(ds.Tables[0].Rows[i][strColumn].ToString().Trim().Equals(ColumnValue[j])) { ds.Tables[0].Rows[i].Delete(); } } } } else { for(int j=0; j < ColumnValue.Length; j++) { for(int i=0; i < ds.Tables[0].Rows.Count; i++) { if(ds.Tables[0].Rows[i][strColumn].ToString().Trim().Equals(ColumnValue[j])) { ds.Tables[0].Rows[i].Delete(); } } } } ds.WriteXml(GetXmlFullPath(strXmlPath)); } return true; } catch(Exception) { return false; } } #endregion

 

#region DeleteXmlAllRows /// /// 刪除所有行 /// /// XML路徑 /// public static bool DeleteXmlAllRows(string strXmlPath) { try { DataSet ds = new DataSet(); ds.ReadXml(GetXmlFullPath(strXmlPath)); //如果記錄條數大於0 if(ds.Tables[0].Rows.Count > 0) { //移除所有記錄 ds.Tables[0].Rows.Clear(); } //重新寫入,這時XML文件中就只剩根節點了 ds.WriteXml(GetXmlFullPath(strXmlPath)); return true; } catch(Exception) { return false; } } #endregion

#region GetXmlFullPath /// /// 返回完整路徑 /// /// Xml的路徑 /// public static string GetXmlFullPath(string strPath) { if(strPath.IndexOf(":") > 0) { return strPath; } else { return Application.StartupPath + strPath; } } #endregion } }

loading...

2005-10-3 一個通過DataSet操作XML的類

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

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

  2 程序詳解   (1) XML文件內容   本類操作的XML和生成的XML格式是一樣的,如下:

http://tempuri.org/xml_xmlDB.xsd">

2 Asp.net程序員 2 開發B/S結構程序 asp.net c#等

建國路XXX

2008-8-31 false

4 c#程序員 2 開發B/S結構程序 asp.net c#等

建國路XXX

2008-8-31 false

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

http://tempuri.org/xml_xmlDB.xsd" xmlns:mstns="http://tempuri.org/xml_xmlDB.xsd"xmlns="http://tempuri.org/xml_xmlDB.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"attributeFormDefault="qualified" elementFormDefault="qualified"> msdata:Locale="zh-CN" msdata:EnforceConstaints="False">?msdata:AutoIncrement="true" msdata:AutoIncrementStep="1"msdata:AutoIncrementSeed="1" />

  注意:如果想像數據庫一樣有一個自動增長的ID字段,則可以這樣操作:   首先在XML中添加一個元素,這樣生成.xsd的時候,就會有一個ID段,在.xsd中選中ID這一列,在右邊的屬性中,將“AutoIncrementSeed”和“AutoIncrementStep”分別設置爲1,這樣ID就會從1開始以步長爲1自動增長。

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

  (2) 處理XML文件路徑   這裏主要是對傳入的XML路徑進行處理,如果傳入的是相對路徑,則返回完整路徑,如果傳入的是完整路徑,則不做處理直接返回。方法如下:

#region GetXmlFullPath /// /// 返回完整路徑 /// /// Xml的路徑 /// public static string GetXmlFullPath(string strPath) { //如果路徑中含有:符號,則認定爲傳入的是完整路徑 if(strPath.IndexOf(":") > 0) { return strPath; } else { //返回完整路徑 return System.Web.HttpContext.Current.Server.MapPath(strPath); } } #endregion

  (3) 讀取記錄   讀取XML的數據到DataSet中的方法爲:

#region GetDataSetByXml /// /// 讀取xml直接返回DataSet /// /// xml文件相對路徑 /// public static DataSet GetDataSetByXml(string strXmlPath) { try { DataSet ds = new DataSet(); //讀取XML到DataSet ds.ReadXml(GetXmlFullPath(strXmlPath)); if(ds.Tables.Count > 0) { 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 strXmlPath,string strWhere,string strSort) { try { DataSet ds = new DataSet(); ds.ReadXml(GetXmlFullPath(strXmlPath)); //創建DataView來完成排序或篩選操作 DataView dv = new DataView(ds.Tables[0]); if(strSort != null) { //對DataView中的記錄進行排序 dv.Sort = strSort; } if(strWhere != null) { //對DataView中的記錄進行篩選,找到我們想要的記錄 dv.RowFilter = strWhere; } return dv; } catch(Exception) { return null; } } #endregion

 

  (4) 插入記錄   到現在爲止我們已經可以隨意讀取XML中的記錄,接下來來實現寫入XML的操作,方法如下:

#region WriteXmlByDataSet /// 〈summary〉 /// 向Xml文件插入一行數據 /// 〈/summary〉 /// 〈param name="strXmlPath"〉xml文件相對路徑〈/param〉 /// 〈param name="Columns"〉要插入行的列名數組,如:string[] Columns = {"name","IsMarried"};〈/param〉 /// 〈param name="ColumnValue"〉要插入行每列的值數組,如:string[] ColumnValue={"kgdiwss","false"};〈/param〉 /// 〈returns〉成功返回true,否則返回false〈/returns〉 public static bool WriteXmlByDataSet(string strXmlPath,string[] Columns,string[] ColumnValue) { try { //根據傳入的XML路徑得到.XSD的路徑,兩個文件放在同一個目錄下string strXsdPath = strXmlPath.Substring(0,strXmlPath.IndexOf(".")) + ".xsd";

DataSet ds = new DataSet(); //讀xml架構,關係到列的數據類型 ds.ReadXmlSchema(GetXmlFullPath(strXsdPath)); ds.ReadXml(GetXmlFullPath(strXmlPath)); DataTable dt = ds.Tables[0]; //在原來的表格基礎上創建新行 DataRow newRow = dt.NewRow();

//循環給 一行中的各個列賦值 for(int i=0; i〈 Columns.Length; i++) { newRow[Columns[i]] = ColumnValue[i]; } dt.Rows.Add(newRow); dt.AcceptChanges(); ds.AcceptChanges(); ds.WriteXml(GetXmlFullPath(strXmlPath)); return true; } catch(Exception) { return false; } } #endregion

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

  (5) 修改記錄   修改記錄的方法要傳入的參數相對較多,因爲修改記錄需要先定位到具體哪一條記錄,再修改指定列的值,以下爲修改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 strXmlPath,string[] Columns,string[] ColumnValue,string strWhereColumnName,string strWhereColumnValue) { try { //同上一方法 string strXsdPath = strXmlPath.Substring(0,strXmlPath.IndexOf(".")) + ".xsd";

DataSet ds = new DataSet(); //讀xml架構,關係到列的數據類型 ds.ReadXmlSchema(GetXmlFullPath(strXsdPath)); ds.ReadXml(GetXmlFullPath(strXmlPath));

//先判斷行數 if(ds.Tables[0].Rows.Count 〉 0) { for(int i=0; i〈 ds.Tables[0].Rows.Count; i++) { //如果當前記錄爲符合Where條件的記錄if(ds.Tables[0].Rows[i][strWhereColumnName].ToString().Trim().Equals(strWhereColumnValue)) { //循環給找到行的各列賦新值 for(int j=0; j 〈 Columns.Length; j++) { ds.Tables[0].Rows[i][Columns[j]] = ColumnValue[j]; } //更新DataSet ds.AcceptChanges(); //重新寫入XML文件 ds.WriteXml(GetXmlFullPath(strXmlPath)); return true; } }

} return false; } catch(Exception) { return false; } } #endregion

 

  (6) 刪除記錄   爲了方便,刪除記錄提供了三個方法,一個可以刪除所有記錄,一個刪除符合條件的行,還有一個刪除指定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(); ds.ReadXml(GetXmlFullPath(strXmlPath)); //如果記錄條數大於0 if(ds.Tables[0].Rows.Count 〉 0) { //移除所有記錄 ds.Tables[0].Rows.Clear(); } //重新寫入,這時XML文件中就只剩根節點了 ds.WriteXml(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 strXmlPath,int iDeleteRow) { try { DataSet ds = new DataSet(); ds.ReadXml(GetXmlFullPath(strXmlPath)); if(ds.Tables[0].Rows.Count 〉 0) { //刪除符號條件的行 ds.Tables[0].Rows[iDeleteRow].Delete(); } ds.WriteXml(GetXmlFullPath(strXmlPath)); return true; } catch(Exception) { return false; } } #endregion

  這裏說一下提供此方法的原因,有的時候將XML的內容讀到DataSet,然後綁定到DataGrid後,由於DataGrid中只有一個模板列,而模板列裏又套了表格等許多控件,這就使得我們可能無法得到記錄對應的ID值,這個時候就可以先得到記錄的Index值(第一行爲0,第二行爲1,以此類推),然後將該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 strXmlPath,string strColumn,string[] ColumnValue) { try { DataSet ds = new DataSet(); ds.ReadXml(GetXmlFullPath(strXmlPath));

//先判斷行數 if(ds.Tables[0].Rows.Count 〉 0) { //判斷行多還是刪除的值多,多的for循環放在裏面 if(ColumnValue.Length 〉 ds.Tables[0].Rows.Count) { for(int i=0; i 〈 ds.Tables[0].Rows.Count; i++) { for(int j=0; j 〈 ColumnValue.Length; j++) { //找到符合條件的行if(ds.Tables[0].Rows[i][strColumn].ToString().Trim().Equals(ColumnValue[j])) { //刪除行 ds.Tables[0].Rows[i].Delete(); } } } } else { for(int j=0; j 〈 ColumnValue.Length; j++) { for(int i=0; i 〈 ds.Tables[0].Rows.Count; i++) { //找到符合條件的行if(ds.Tables[0].Rows[i][strColumn].ToString().Trim().Equals(ColumnValue[j])) { //刪除行 ds.Tables[0].Rows[i].Delete(); } } } } ds.WriteXml(GetXmlFullPath(strXmlPath)); } return true; } catch(Exception) { return false; } } #endregion

 

3實例解析

  (7) 讀取XML   以下代碼讀取到一個沒有排序和篩選的DataSet。 DataGrid1.DataSource = OperateXmlByDataSet.GetDataSetByXml(@"xml/xml_xmlDB.xml"); DataGrid1.DataBind(); 以下代碼讀到的數據是經過篩選和排序的: DataGrid1.DataSource = OperateXmlByDataSet.GetDataViewByXml( @"xml/xml_xmlDB.xml", //XML文件路徑 "name = 'Asp.net'", //條件:name列值爲Asp.net "peopleNum desc"); //按peopleNum列降序排列 DataGrid1.DataBind();

  (8) 添加記錄   以下代碼向XML文件中添加了一條記錄,同時給7個列賦值: bool b; b = OperateXmlByDataSet.WriteXmlByDataSet( @"xml/xml_xmlDB.xml", //XML文件地址 new string[]{ "name", //姓名字段 "peopleNum", //人數字段 "address", //地址字段 "description", //描述字段 "require", //需求字段 "deadLine", //結束時間字段 "IsMarried" //婚否字段 }, new string[]{ "Asp.net程序員", //姓名字段值 "2", //人數字段值 "建國路", //地址字段值 "B/S結構程序", //描述字段值 "asp.net c#等", //需求字段值 DateTime.Now.ToShortDateString(), //結束時間字段值 "false" //婚否字段值 });

  如果b返回值爲true,表示添加成功,否則表示添加失敗。以上的寫法我用了些偷懶的方法,比如我把數組直接放在參數,而沒有另外申明,事實上你可以另外申明一個數組,然後再傳到方法中。   請注意字段在數組中的位置和值在數組中的位置的對應關係。

  (9) 修改記錄   以下代碼將找到peopleNum列值爲3的行,然後將行的name、peopleNum、、description和IsMarried四個字段的值分別更新成kgdiwss、10、描述、true。 bool b; b = OperateXmlByDataSet.UpdateXmlRow( @"xml/xml_xmlDB.xml", new string[]{"name","peopleNum","description","IsMarried"}, new string[]{"kgdiwss","10","描述","true"}, "peopleNum", "3");

  返回true表示修改成功,否則表示修改失敗。   請特別注意,字段類型爲邏輯型時,賦值用的是true和false,而不是0和1。

  (10) 刪除記錄   以下代碼實現刪除name列值爲數組中的值的行。 bool b; b = OperateXmlByDataSet.DeleteXmlRows( @"xml/xml_xmlDB.xml", //XML文件路徑 "name", //條件列 new string[]{ "值1", //條件值1 "值2", //條件值2 "值3" //條件值3 });

  上面代碼執行成功後,name列值爲值1、值2、值3的行將被刪除。   刪除成功返回true,否則返回false。   另外兩種刪除的方法用法比較簡單,這裏就不介紹了。

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

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章