麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發(fā) > XML > 正文

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

2024-09-05 20:55:57
字體:
供稿:網(wǎng)友
我用的是一種很笨的方法,但可以幫助初學(xué)者了解訪問xml節(jié)點的過程。 
已知有一個xml文件(bookstore.xml)如下: 
corets, eva 
5.95 
1、插入節(jié)點 
往節(jié)點中插入一個節(jié)點: 

xmldocument xmldoc=new xmldocument(); 
xmldoc.load("bookstore.xml"); 
xmlnode root=xmldoc.selectsinglenode("bookstore");//查找 
xmlelement xe1=xmldoc.createelement("book");//創(chuàng)建一個節(jié)點 
xe1.setattribute("genre","李贊紅");//設(shè)置該節(jié)點genre屬性 
xe1.setattribute("isbn","2-3631-4");//設(shè)置該節(jié)點isbn屬性 

xmlelement xesub1=xmldoc.createelement("title"); 
xesub1.innertext="cs從入門到精通";//設(shè)置文本節(jié)點 
xe1.appendchild(xesub1);//添加到節(jié)點中 
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);//添加到節(jié)點中 
xmldoc.save("bookstore.xml");  
結(jié)果為: 
corets, eva 
5.95 
候捷 
58.3 
2、修改節(jié)點: 
將genre屬性值為“李贊紅“的節(jié)點的genre值改為“update李贊紅”,將該節(jié)點的子節(jié)點的文本修改為“亞勝”。 

xmlnodelist nodelist=xmldoc.selectsinglenode("bookstore").childnodes;//獲取bookstore節(jié)點的所有子節(jié)點 
foreach(xmlnode xn in nodelist)//遍歷所有子節(jié)點 

xmlelement xe=(xmlelement)xn;//將子節(jié)點類型轉(zhuǎn)換為xmlelement類型 
if(xe.getattribute("genre")=="李贊紅")//如果genre屬性值為“李贊紅” 

xe.setattribute("genre","update李贊紅");//則修改該屬性為“update李贊紅” 

xmlnodelist nls=xe.childnodes;//繼續(xù)獲取xe子節(jié)點的所有子節(jié)點 
foreach(xmlnode xn1 in nls)//遍歷 

xmlelement xe2=(xmlelement)xn1;//轉(zhuǎn)換類型 
if(xe2.name=="author")//如果找到 

xe2.innertext="亞勝";//則修改 
break;//找到退出來就可以了 


break; 



xmldoc.save("bookstore.xml");//保存。 
最后結(jié)果為: 
corets, eva 
5.95 
亞勝 
58.3 
3、刪除節(jié)點  
節(jié)點的genre屬性,刪除 節(jié)點。 

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();//刪除該節(jié)點的全部內(nèi)容 


xmldoc.save("bookstore.xml");  
最后結(jié)果為: 
corets, eva 
5.95 
4、顯示所有數(shù)據(jù)。 

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);//顯示子節(jié)點點文本 

}  
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: 在此處添加構(gòu)造函數(shù)邏輯 
// 


#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返回一個經(jīng)排序或篩選后的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文件插入一行數(shù)據(jù) 
///  
/// xml文件相對路徑 
/// 要插入行的列名數(shù)組,如:string[] columns = {"name","ismarried"}; 
/// 要插入行每列的值數(shù)組,如:string[] columnvalue={"明天去要飯","false"}; 
/// 成功返回true,否則返回false 
public static bool writexmlbydataset(string strxmlpath,string[] columns,string[] columnvalue) 

try 

//根據(jù)傳入的xml路徑得到.xsd的路徑,兩個文件放在同一個目錄下 
string strxsdpath = strxmlpath.substring(0,strxmlpath.indexof(".")) + ".xsd"; 

dataset ds = new dataset(); 
//讀xml架構(gòu),關(guān)系到列的數(shù)據(jù)類型 
ds.readxmlschema(getxmlfullpath(strxsdpath)); 
ds.readxml(getxmlfullpath(strxmlpath)); 
datatable dt = ds.tables[0]; 
//在原來的表格基礎(chǔ)上創(chuàng)建新行 
datarow newrow = dt.newrow(); 

//循環(huán)給一行中的各個列賦值 
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文件路徑 
/// 列名數(shù)組 
/// 列值數(shù)組 
/// 條件列名 
/// 條件列值 
///  
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架構(gòu),關(guān)系到列的數(shù)據(jù)類型 
ds.readxmlschema(getxmlfullpath(strxsdpath)); 
ds.readxml(getxmlfullpath(strxmlpath)); 

//先判斷行數(shù) 
if(ds.tables[0].rows.count > 0) 

for(int i=0; i< ds.tables[0].rows.count; i++) 

//如果當(dāng)前記錄為符合where條件的記錄 
if(ds.tables[0].rows[i][strwherecolumnname].tostring().trim().equals(strwherecolumnvalue)) 

//循環(huán)給找到行的各列賦新值 
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以實現(xiàn)刪除指定行 
///  
///  
/// 要刪除的行在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)); 

//先判斷行數(shù) 
if(ds.tables[0].rows.count > 0) 

//判斷行多還是刪除的值多,多的for循環(huán)放在里面 
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)); 
//如果記錄條數(shù)大于0 
if(ds.tables[0].rows.count > 0) 

//移除所有記錄 
ds.tables[0].rows.clear(); 

//重新寫入,這時xml文件中就只剩根節(jié)點了 
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都覺得挺麻煩,沒有數(shù)據(jù)庫那么順手。后來發(fā)現(xiàn)用dataset操作xml很方便,而且靈活性比較好,于是寫了一個操作xml的類,用來應(yīng)付一般的xml操作(源碼下載附件)。 

  1 基本思路 
  其實用dataset操作xml,歸根到底就是對dataset里的表格,行,列等進(jìn)行操作,然后用dataset里的東西重新寫到xml中,從而實現(xiàn)編輯xml的目的。如果再配合上.xsd文件的話,那效果更佳。 

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


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

2 asp.net程序員 

開發(fā)b/s結(jié)構(gòu)程序 
asp.net c#等 

建國路xxx 

2008-8-31 
false 


c#程序員 

開發(fā)b/s結(jié)構(gòu)程序 
asp.net c#等 

建國路xxx 

2008-8-31 
false 

  然后點擊xml文件右下角的“數(shù)據(jù)”,即可看到熟悉的表格形式,在表格的任意位置上單擊右鍵選擇“創(chuàng)建架構(gòu)”,將會生成一個.xsd文件,該文件用來定義xml各列的類型。其內(nèi)容如下(點擊查看代碼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" /> 
  


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

  以上代碼如果看不懂并不要緊,因為我們可以通過dataset來生成這種格式的內(nèi)容。接下來將開始操作xml。 

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

#region getxmlfullpath 
///  
/// 返回完整路徑 
///  
/// xml的路徑 
///  
public static string getxmlfullpath(string strpath) 

//如果路徑中含有:符號,則認(rèn)定為傳入的是完整路徑  
if(strpath.indexof(":") > 0) 

return strpath; 

else 

//返回完整路徑 
return system.web.httpcontext.current.server.mappath(strpath); 


#endregion  


  (3) 讀取記錄 
  讀取xml的數(shù)據(jù)到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記錄的信息,而且沒有經(jīng)過任何處理。但很多時候我們需要的只是一些滿足條件的記錄,這時需要用以下方法得到: 

#region getdataviewbyxml 
/// 〈summary〉 
/// 讀取xml返回一個經(jīng)排序或篩選后的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)); 
//創(chuàng)建dataview來完成排序或篩選操作 
dataview dv = new dataview(ds.tables[0]); 
if(strsort != null) 

//對dataview中的記錄進(jìn)行排序 
dv.sort = strsort; 

if(strwhere != null) 

//對dataview中的記錄進(jìn)行篩選,找到我們想要的記錄 
dv.rowfilter = strwhere; 

return dv; 

catch(exception) 

return null; 


#endregion  

  


  (4) 插入記錄 
  到現(xiàn)在為止我們已經(jīng)可以隨意讀取xml中的記錄,接下來來實現(xiàn)寫入xml的操作,方法如下: 

#region writexmlbydataset 
/// 〈summary〉 
/// 向xml文件插入一行數(shù)據(jù) 
/// 〈/summary〉 
/// 〈param name="strxmlpath"〉xml文件相對路徑〈/param〉 
/// 〈param name="columns"〉要插入行的列名數(shù)組,如:string[] columns = {"name","ismarried"};〈/param〉 
/// 〈param name="columnvalue"〉要插入行每列的值數(shù)組,如:string[] columnvalue={"kgdiwss","false"};〈/param〉 
/// 〈returns〉成功返回true,否則返回false〈/returns〉 
public static bool writexmlbydataset(string strxmlpath,string[] columns,string[] columnvalue) 

try 

//根據(jù)傳入的xml路徑得到.xsd的路徑,兩個文件放在同一個目錄下string strxsdpath = strxmlpath.substring(0,strxmlpath.indexof(".")) + ".xsd"; 

dataset ds = new dataset(); 
//讀xml架構(gòu),關(guān)系到列的數(shù)據(jù)類型 
ds.readxmlschema(getxmlfullpath(strxsdpath)); 
ds.readxml(getxmlfullpath(strxmlpath)); 
datatable dt = ds.tables[0]; 
//在原來的表格基礎(chǔ)上創(chuàng)建新行 
datarow newrow = dt.newrow(); 

//循環(huán)給 一行中的各個列賦值 
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 
  


  可能有的朋友不知道怎么用這個方法插入數(shù)據(jù),在后面我將用實例介紹。 

  (5) 修改記錄 
  修改記錄的方法要傳入的參數(shù)相對較多,因為修改記錄需要先定位到具體哪一條記錄,再修改指定列的值,以下為修改xml的方法: 

#region updatexmlrow 
/// 〈summary〉 
/// 更行符合條件的一條xml記錄 
/// 〈/summary〉 
/// 〈param name="strxmlpath"〉xml文件路徑〈/param〉 
/// 〈param name="columns"〉列名數(shù)組〈/param〉 
/// 〈param name="columnvalue"〉列值數(shù)組〈/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架構(gòu),關(guān)系到列的數(shù)據(jù)類型 
ds.readxmlschema(getxmlfullpath(strxsdpath)); 
ds.readxml(getxmlfullpath(strxmlpath)); 

//先判斷行數(shù) 
if(ds.tables[0].rows.count 〉 0) 

for(int i=0; i〈 ds.tables[0].rows.count; i++) 

//如果當(dāng)前記錄為符合where條件的記錄if(ds.tables[0].rows[i][strwherecolumnname].tostring().trim().equals(strwherecolumnvalue)) 

//循環(huán)給找到行的各列賦新值 
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值對應(yīng)。刪除所有記錄的方法為: 

#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)); 
//如果記錄條數(shù)大于0 
if(ds.tables[0].rows.count 〉 0) 

//移除所有記錄 
ds.tables[0].rows.clear(); 

//重新寫入,這時xml文件中就只剩根節(jié)點了 
ds.writexml(getxmlfullpath(strxmlpath)); 
return true; 

catch(exception) 

return false; 


#endregion 
刪除指定index值的行的方法為: 
#region deletexmlrowbyindex 
/// 〈summary〉 
/// 通過刪除dataset中ideleterow這一行,然后重寫xml以實現(xiàn)刪除指定行 
/// 〈/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 
  


  這里說一下提供此方法的原因,有的時候?qū)ml的內(nèi)容讀到dataset,然后綁定到datagrid后,由于datagrid中只有一個模板列,而模板列里又套了表格等許多控件,這就使得我們可能無法得到記錄對應(yīng)的id值,這個時候就可以先得到記錄的index值(第一行為0,第二行為1,以此類推),然后將該index值傳到方法中,就可以將該記錄刪掉。 

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

  有時候我們需要刪除符合條件的多行,這個時候可以用以下方法實現(xiàn): 

#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)); 

//先判斷行數(shù) 
if(ds.tables[0].rows.count 〉 0) 

//判斷行多還是刪除的值多,多的for循環(huán)放在里面 
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(); 
以下代碼讀到的數(shù)據(jù)是經(jīng)過篩選和排序的: 
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", //人數(shù)字段 
"address", //地址字段 
"description", //描述字段 
"require", //需求字段 
"deadline", //結(jié)束時間字段 
"ismarried" //婚否字段 
}, 
new string[]{ 
"asp.net程序員", //姓名字段值 
"2", //人數(shù)字段值 
"建國路", //地址字段值 
"b/s結(jié)構(gòu)程序", //描述字段值 
"asp.net c#等", //需求字段值 
datetime.now.toshortdatestring(), //結(jié)束時間字段值 
"false" //婚否字段值 
}); 
  


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

  (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表示修改成功,否則表示修改失敗。 
  請?zhí)貏e注意,字段類型為邏輯型時,賦值用的是true和false,而不是0和1。 

  (10) 刪除記錄 
  以下代碼實現(xiàn)刪除name列值為數(shù)組中的值的行。 
bool b; 
b = operatexmlbydataset.deletexmlrows( 
@"xml/xml_xmldb.xml", //xml文件路徑 
"name", //條件列 
new string[]{ 
"值1", //條件值1 
"值2", //條件值2 
"值3" //條件值3 
}); 
  


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

  以上就是操作xml的所有方法,相信可以滿足很大一部份的使用了。然而,如果xml中的數(shù)據(jù)量比較大的話,使用以上方法效率可能不高,但話又說回來,如果數(shù)據(jù)量比較大的話,還是選擇數(shù)據(jù)庫比較好。 
  中國最大的web開發(fā)資源網(wǎng)站及技術(shù)社區(qū),
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 日韩精品免费一区二区三区 | 91 在线免费观看 | 午夜精品毛片 | 国产18成人免费视频 | 深夜福利久久久 | 91九色视频在线播放 | 韩国三级日本三级香港三级黄 | 久久久中精品2020中文 | 精品国产乱码久久久久久丨区2区 | 免费午夜视频 | 亚洲国产精品一 | 成人福利在线 | 亚洲va久久久噜噜噜久久男同 | 在线播放污 | 国产二区三区在线播放 | 日日鲁夜夜视频热线播放 | av电影在线网站 | 亚洲aⅴ在线观看 | 中文字幕在线免费看 | 日本高清电影在线播放 | 中文字幕综合在线观看 | 国产精品亚洲三区 | 黄色网址在线播放 | cosplay裸体福利写真 | 日本黄色免费片 | 欧美日韩视频网站 | 性爱视频免费 | 素人视频在线观看免费 | www.91sao| 亚洲婷婷日日综合婷婷噜噜噜 | 泰剧19禁啪啪无遮挡 | 久草在线观看福利视频 | 欧洲成人综合网 | 国产精品久久久久久久久久10秀 | 欧美成人se01短视频在线看 | 伦一区二区三区中文字幕v亚洲 | 19禁国产精品福利视频 | 精品国产一区二区在线 | 亚洲性一区 | 亚洲少妇诱惑 | 午夜视频亚洲 |