亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > XML > 正文

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

2024-09-05 20:55:57
字體:
來源:轉載
供稿:網友
我用的是一種很笨的方法,但可以幫助初學者了解訪問xml節點的過程。 
已知有一個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程序員 

開發b/s結構程序 
asp.net c#等 

建國路xxx 

2008-8-31 
false 


c#程序員 

開發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中的數據量比較大的話,使用以上方法效率可能不高,但話又說回來,如果數據量比較大的話,還是選擇數據庫比較好。 
  中國最大的web開發資源網站及技術社區,
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产91精品黑色丝袜高跟鞋| 91精品国产色综合久久不卡98口| 欧美人交a欧美精品| 精品久久久91| 精品视频中文字幕| 欧美日韩xxx| 91av在线不卡| 在线视频欧美日韩精品| 欧美日韩亚洲一区二| 国产一区二区三区四区福利| 两个人的视频www国产精品| 日韩一区二区在线视频| 亚洲精品99999| 亚洲欧美在线免费| 在线观看精品自拍私拍| 亚洲第一区中文字幕| 亚洲一区二区三区四区视频| 4k岛国日韩精品**专区| 亚洲国产日韩欧美在线动漫| 91色中文字幕| 国产精品无码专区在线观看| 欧美国产亚洲视频| 欧美精品在线观看| 日韩一区视频在线| 中文字幕久热精品在线视频| 欧美日韩免费看| 欧美日韩在线影院| 日韩av在线电影网| 亚洲第一视频在线观看| 日韩欧美精品在线观看| 亚洲国产精品99| 亚洲一区二区三区sesese| 狠狠躁天天躁日日躁欧美| 日韩美女免费视频| 欧美日韩国产综合新一区| 国产成人精品久久二区二区| 日韩av手机在线看| 国产国语刺激对白av不卡| 欧美视频在线看| 97视频国产在线| 亚洲欧美国产精品久久久久久久| 国内精品久久久久| 午夜精品久久久久久久久久久久久| 欧美亚洲午夜视频在线观看| 亚洲男人的天堂在线播放| 久热精品视频在线免费观看| 亚洲美女av在线| 国产成人精品综合久久久| 亚洲新声在线观看| 热久久免费视频精品| 国产日韩av高清| 久久艳片www.17c.com| 法国裸体一区二区| 亚洲韩国日本中文字幕| 亚洲xxxxx性| 国模极品一区二区三区| 国产日韩欧美日韩| 亚洲欧洲在线播放| 欧美精品福利在线| 九九九久久国产免费| 秋霞av国产精品一区| 日韩av影片在线观看| 国产精品久久在线观看| 欧美成人剧情片在线观看| 日本伊人精品一区二区三区介绍| 日韩精品免费电影| 亚洲激情成人网| 在线精品视频视频中文字幕| 国产99视频精品免视看7| 国产精品综合不卡av| 欧美黑人视频一区| 欧美激情精品久久久久久大尺度| 精品视频久久久久久久| 国产日韩av高清| 亚洲日本成人网| 久久久精品美女| 一区二区中文字幕| 亚洲春色另类小说| 成人www视频在线观看| 国产精品视频中文字幕91| 欧美另类精品xxxx孕妇| 亚洲欧美中文另类| 亚洲欧美日韩在线一区| 欧美wwwwww| 欧美亚洲日本网站| 国产精品久久久久久久午夜| 亚洲a级在线播放观看| 91青草视频久久| 日韩中文字幕在线看| 欧美极品少妇全裸体| 91精品国产九九九久久久亚洲| 91伊人影院在线播放| 欧美洲成人男女午夜视频| 亚洲老头老太hd| 黄色一区二区在线| 日本精品中文字幕| 欧美视频中文字幕在线| 亚洲国产欧美一区二区丝袜黑人| 久久夜色撩人精品| 亚洲欧美另类自拍| 中文字幕亚洲无线码在线一区| 午夜精品久久久99热福利| 精品成人69xx.xyz| 国产精品吴梦梦| 日韩精品视频三区| 日韩激情第一页| 成人xxxx视频| 亚洲精品aⅴ中文字幕乱码| 亚洲欧美日韩直播| 亚洲欧洲在线看| 国产欧美一区二区白浆黑人| 国产97在线|亚洲| 久久久999国产精品| 色一情一乱一区二区| 色综合久久精品亚洲国产| 68精品久久久久久欧美| 欧美性xxxx| 日韩经典一区二区三区| 欧美一级免费看| 一区国产精品视频| 懂色av影视一区二区三区| 色多多国产成人永久免费网站| 中文字幕日韩欧美在线视频| 一区二区三区高清国产| 中文字幕亚洲精品| 狠狠躁夜夜躁人人爽超碰91| 欧美精品久久一区二区| 国产日韩精品综合网站| 俺也去精品视频在线观看| 狠狠躁18三区二区一区| 精品国产91久久久| 久久99热精品| 国产在线观看精品一区二区三区| 欧美性猛交xxxx富婆弯腰| 日韩成人激情影院| 国产做受高潮69| 国产乱肥老妇国产一区二| 欧美美女15p| 国产亚洲精品久久| 亚洲最大中文字幕| 国产精品av在线| 亚洲区一区二区| 亚洲精品资源美女情侣酒店| 亚洲综合在线做性| 欧美精品情趣视频| 国产免费成人av| 亚洲精品综合久久中文字幕| 精品自在线视频| www.国产精品一二区| 91在线中文字幕| 91精品视频在线| 欧美成人免费在线视频| 日韩高清欧美高清| 成人黄色短视频在线观看| 久久99视频免费| 欧美第一页在线| 精品色蜜蜜精品视频在线观看| 国产亚洲成精品久久| 色在人av网站天堂精品| 欧美激情欧美激情在线五月| 欧美日韩激情视频8区| 亚洲自拍小视频免费观看| 国产精品国产亚洲伊人久久| 精品国偷自产在线|