ASP网站制作之c#操纵XML(读XML,写XML,更新,删除节...
asp对于服务器的要求较高,一般的服务器如果访问量一大就垮了,不得不重启。xml我用的是一种很笨的办法,但能够匡助初学者懂得会见XML节点的历程。已知有一个XML文件(bookstore.xml)以下:
Corets,Eva
5.95
1、拔出节点
往节点中拔出一个节点:
XmlDocumentxmlDoc=newXmlDocument();
xmlDoc.Load("bookstore.xml");
XmlNoderoot=xmlDoc.SelectSingleNode("bookstore");//查找
XmlElementxe1=xmlDoc.CreateElement("book");//创立一个节点
xe1.SetAttribute("genre","李赞红");//设置该节点genre属性
xe1.SetAttribute("ISBN","2-3631-4");//设置该节点ISBN属性
XmlElementxesub1=xmlDoc.CreateElement("title");
xesub1.InnerText="CS从进门到精晓";//设置文本节点
xe1.AppendChild(xesub1);//增加到节点中
XmlElementxesub2=xmlDoc.CreateElement("author");
xesub2.InnerText="候捷";
xe1.AppendChild(xesub2);
XmlElementxesub3=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李赞红”,将该节点的子节点的文本修正为“亚胜”。
XmlNodeListnodeList=xmlDoc.SelectSingleNode("bookstore").ChildNodes;//猎取bookstore节点的一切子节点
foreach(XmlNodexninnodeList)//遍历一切子节点
{
XmlElementxe=(XmlElement)xn;//将子节点范例转换为XmlElement范例
if(xe.GetAttribute("genre")=="李赞红")//假如genre属性值为“李赞红”
{
xe.SetAttribute("genre","update李赞红");//则修正该属性为“update李赞红”
XmlNodeListnls=xe.ChildNodes;//持续猎取xe子节点的一切子节点
foreach(XmlNodexn1innls)//遍历
{
XmlElementxe2=(XmlElement)xn1;//转换范例
if(xe2.Name=="author")//假如找到
{
xe2.InnerText="亚胜";//则修正
break;//找到加入来就能够了
}
}
break;
}
}
xmlDoc.Save("bookstore.xml");//保留。
最初了局为:
Corets,Eva
5.95
亚胜
58.3
3、删除节点
节点的genre属性,删除节点。
XmlNodeListxnl=xmlDoc.SelectSingleNode("bookstore").ChildNodes;
foreach(XmlNodexninxnl)
{
XmlElementxe=(XmlElement)xn;
if(xe.GetAttribute("genre")=="fantasy")
{
xe.RemoveAttribute("genre");//删除genre属性
}
elseif(xe.GetAttribute("genre")=="update李赞红")
{
xe.RemoveAll();//删除该节点的全体内容
}
}
xmlDoc.Save("bookstore.xml");
最初了局为:
Corets,Eva
5.95
4、显现一切数据。
XmlNodexn=xmlDoc.SelectSingleNode("bookstore");
XmlNodeListxnl=xn.ChildNodes;
foreach(XmlNodexnfinxnl)
{
XmlElementxe=(XmlElement)xnf;
Console.WriteLine(xe.GetAttribute("genre"));//显现属性值
Console.WriteLine(xe.GetAttribute("ISBN"));
XmlNodeListxnf1=xe.ChildNodes;
foreach(XmlNodexn2inxnf1)
{
Console.WriteLine(xn2.InnerText);//显现子节点点文本
}
}
loading...
2005-10-3
一个经由过程DataSet操纵XML的类(源代码)
usingSystem;
usingSystem.Data;
usingSystem.Xml;
usingSystem.Windows.Forms;
//***************************************
//作者:∮今天往要饭
//QICQ:305725744
//.Net群:6370988
//http://blog.csdn.net/kgdiwss
//***************************************
namespaceYSTRP.Common
{
///
///OperateXmlByDataSet的择要申明。
///
publicclassOperateXmlByDataSet
{
publicOperateXmlByDataSet()
{
//
//TODO:在此处增加机关函数逻辑
//
}
#regionGetDataSetByXml
///
///读取xml间接前往DataSet
///
///xml文件绝对路径
///
publicstaticDataSetGetDataSetByXml(stringstrXmlPath)
{
try
{
DataSetds=newDataSet();
ds.ReadXml(GetXmlFullPath(strXmlPath));
if(ds.Tables.Count>0)
{
returnds;
}
returnnull;
}
catch(Exceptionex)
{
System.Windows.Forms.MessageBox.Show(ex.ToString());
returnnull;
}
}
#endregion
#regionGetDataViewByXml
///
///读取Xml前往一个经排序或选择后的DataView
///
///
///选择前提,如:"name='kgdiwss'"
///排序前提,如:"Iddesc"
///
publicstaticDataViewGetDataViewByXml(stringstrXmlPath,stringstrWhere,stringstrSort)
{
try
{
DataSetds=newDataSet();
ds.ReadXml(GetXmlFullPath(strXmlPath));
DataViewdv=newDataView(ds.Tables);
if(strSort!=null)
{
dv.Sort=strSort;
}
if(strWhere!=null)
{
dv.RowFilter=strWhere;
}
returndv;
}
catch(Exception)
{
returnnull;
}
}
#endregion
#regionWriteXmlByDataSet
///
///向Xml文件拔出一行数据
///
///xml文件绝对路径
///要拔出行的列名数组,如:string[]Columns={"name","IsMarried"};
///要拔出行每列的值数组,如:string[]ColumnValue={"今天往要饭","false"};
///乐成前往true,不然前往false
publicstaticboolWriteXmlByDataSet(stringstrXmlPath,string[]Columns,string[]ColumnValue)
{
try
{
//依据传进的XML路径失掉.XSD的路径,两个文件放在统一个目次下
stringstrXsdPath=strXmlPath.Substring(0,strXmlPath.IndexOf("."))+".xsd";
DataSetds=newDataSet();
//读xml架构,干系到列的数据范例
ds.ReadXmlSchema(GetXmlFullPath(strXsdPath));
ds.ReadXml(GetXmlFullPath(strXmlPath));
DataTabledt=ds.Tables;
//在本来的表格基本上创立新行
DataRownewRow=dt.NewRow();
//轮回给一行中的各个列赋值
for(inti=0;i<Columns.Length;i++)
{
newRow]=ColumnValue;
}
dt.Rows.Add(newRow);
dt.AcceptChanges();
ds.AcceptChanges();
ds.WriteXml(GetXmlFullPath(strXmlPath));
returntrue;
}
catch(Exception)
{
returnfalse;
}
}
#endregion
#regionUpdateXmlRow
///
///更行切合前提的一条Xml纪录
///
///XML文件路径
///列名数组
///列值数组
///前提列名
///前提列值
///
publicstaticboolUpdateXmlRow(stringstrXmlPath,string[]Columns,string[]ColumnValue,stringstrWhereColumnName,stringstrWhereColumnValue)
{
try
{
stringstrXsdPath=strXmlPath.Substring(0,strXmlPath.IndexOf("."))+".xsd";
DataSetds=newDataSet();
//读xml架构,干系到列的数据范例
ds.ReadXmlSchema(GetXmlFullPath(strXsdPath));
ds.ReadXml(GetXmlFullPath(strXmlPath));
//先判别行数
if(ds.Tables.Rows.Count>0)
{
for(inti=0;i<ds.Tables.Rows.Count;i++)
{
//假如以后纪录为切合Where前提的纪录
if(ds.Tables.Rows.ToString().Trim().Equals(strWhereColumnValue))
{
//轮回给找到行的各列赋新值
for(intj=0;j<Columns.Length;j++)
{
ds.Tables.Rows]=ColumnValue;
}
//更新DataSet
ds.AcceptChanges();
//从头写进XML文件
ds.WriteXml(GetXmlFullPath(strXmlPath));
returntrue;
}
}
}
returnfalse;
}
catch(Exception)
{
returnfalse;
}
}
#endregion
#regionDeleteXmlRowByIndex
///
///经由过程删除DataSet中iDeleteRow这一行,然后重写Xml以完成删除指定行
///
///
///要删除的行在DataSet中的Index值
publicstaticboolDeleteXmlRowByIndex(stringstrXmlPath,intiDeleteRow)
{
try
{
DataSetds=newDataSet();
ds.ReadXml(GetXmlFullPath(strXmlPath));
if(ds.Tables.Rows.Count>0)
{
//删除标记前提的行
ds.Tables.Rows.Delete();
}
ds.WriteXml(GetXmlFullPath(strXmlPath));
returntrue;
}
catch(Exception)
{
returnfalse;
}
}
#endregion
#regionDeleteXmlRows
///
///删除strColumn列中值为ColumnValue的行
///
///xml绝对路径
///列名
///strColumn列中值为ColumnValue的行均会被删除
///
publicstaticboolDeleteXmlRows(stringstrXmlPath,stringstrColumn,string[]ColumnValue)
{
try
{
DataSetds=newDataSet();
ds.ReadXml(GetXmlFullPath(strXmlPath));
//先判别行数
if(ds.Tables.Rows.Count>0)
{
//判别行多仍是删除的值多,多的for轮回放在内里
if(ColumnValue.Length>ds.Tables.Rows.Count)
{
for(inti=0;i<ds.Tables.Rows.Count;i++)
{
for(intj=0;j<ColumnValue.Length;j++)
{
if(ds.Tables.Rows.ToString().Trim().Equals(ColumnValue))
{
ds.Tables.Rows.Delete();
}
}
}
}
else
{
for(intj=0;j<ColumnValue.Length;j++)
{
for(inti=0;i<ds.Tables.Rows.Count;i++)
{
if(ds.Tables.Rows.ToString().Trim().Equals(ColumnValue))
{
ds.Tables.Rows.Delete();
}
}
}
}
ds.WriteXml(GetXmlFullPath(strXmlPath));
}
returntrue;
}
catch(Exception)
{
returnfalse;
}
}
#endregion
#regionDeleteXmlAllRows
///
///删除一切行
///
///XML路径
///
publicstaticboolDeleteXmlAllRows(stringstrXmlPath)
{
try
{
DataSetds=newDataSet();
ds.ReadXml(GetXmlFullPath(strXmlPath));
//假如纪录条数年夜于0
if(ds.Tables.Rows.Count>0)
{
//移除一切纪录
ds.Tables.Rows.Clear();
}
//从头写进,这时候XML文件中就只剩根节点了
ds.WriteXml(GetXmlFullPath(strXmlPath));
returntrue;
}
catch(Exception)
{
returnfalse;
}
}
#endregion
#regionGetXmlFullPath
///
///前往完全路径
///
///Xml的路径
///
publicstaticstringGetXmlFullPath(stringstrPath)
{
if(strPath.IndexOf(":")>0)
{
returnstrPath;
}
else
{
returnApplication.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">
2Asp.net程序员
2
开辟B/S布局程序
asp.netc#等
开国路XXX
2008-8-31
false
4
c#程序员
2
开辟B/S布局程序
asp.netc#等
开国路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路径举行处置,假如传进的是绝对路径,则前往完全路径,假如传进的是完全路径,则不做处置间接前往。办法以下:
#regionGetXmlFullPath
///
///前往完全路径
///
///Xml的路径
///
publicstaticstringGetXmlFullPath(stringstrPath)
{
//假如路径中含有:标记,则认定为传进的是完全路径
if(strPath.IndexOf(":")>0)
{
returnstrPath;
}
else
{
//前往完全路径
returnSystem.Web.HttpContext.Current.Server.MapPath(strPath);
}
}
#endregion
(3)读取纪录
读取XML的数据到DataSet中的办法为:
#regionGetDataSetByXml
///
///读取xml间接前往DataSet
///
///xml文件绝对路径
///
publicstaticDataSetGetDataSetByXml(stringstrXmlPath)
{
try
{
DataSetds=newDataSet();
//读取XML到DataSet
ds.ReadXml(GetXmlFullPath(strXmlPath));
if(ds.Tables.Count>0)
{
returnds;
}
returnnull;
}
catch(Exception)
{
returnnull;
}
}
#endregion
以上办法将失掉一个DataSet,内里保留的是全体XML纪录的信息,并且没有经由任那边理。但良多时分我们必要的只是一些满意前提的纪录,这时候必要用以下办法失掉:
#regionGetDataViewByXml
///〈summary〉
///读取Xml前往一个经排序或选择后的DataView
///〈/summary〉
///〈paramname="strXmlPath"〉〈/param〉
///〈paramname="strWhere"〉选择前提,如:"name='kgdiwss'"〈/param〉
///〈paramname="strSort"〉排序前提,如:"Iddesc"〈/param〉
///〈returns〉〈/returns〉
publicstaticDataViewGetDataViewByXml(stringstrXmlPath,stringstrWhere,stringstrSort)
{
try
{
DataSetds=newDataSet();
ds.ReadXml(GetXmlFullPath(strXmlPath));
//创立DataView来完成排序或选择操纵
DataViewdv=newDataView(ds.Tables);
if(strSort!=null)
{
//对DataView中的纪录举行排序
dv.Sort=strSort;
}
if(strWhere!=null)
{
//对DataView中的纪录举行选择,找到我们想要的纪录
dv.RowFilter=strWhere;
}
returndv;
}
catch(Exception)
{
returnnull;
}
}
#endregion
(4)拔出纪录
到如今为止我们已能够随便读取XML中的纪录,接上去来完成写进XML的操纵,办法以下:
#regionWriteXmlByDataSet
///〈summary〉
///向Xml文件拔出一行数据
///〈/summary〉
///〈paramname="strXmlPath"〉xml文件绝对路径〈/param〉
///〈paramname="Columns"〉要拔出行的列名数组,如:string[]Columns={"name","IsMarried"};〈/param〉
///〈paramname="ColumnValue"〉要拔出行每列的值数组,如:string[]ColumnValue={"kgdiwss","false"};〈/param〉
///〈returns〉乐成前往true,不然前往false〈/returns〉
publicstaticboolWriteXmlByDataSet(stringstrXmlPath,string[]Columns,string[]ColumnValue)
{
try
{
//依据传进的XML路径失掉.XSD的路径,两个文件放在统一个目次下stringstrXsdPath=strXmlPath.Substring(0,strXmlPath.IndexOf("."))+".xsd";
DataSetds=newDataSet();
//读xml架构,干系到列的数据范例
ds.ReadXmlSchema(GetXmlFullPath(strXsdPath));
ds.ReadXml(GetXmlFullPath(strXmlPath));
DataTabledt=ds.Tables;
//在本来的表格基本上创立新行
DataRownewRow=dt.NewRow();
//轮回给一行中的各个列赋值
for(inti=0;i〈Columns.Length;i++)
{
newRow]=ColumnValue;
}
dt.Rows.Add(newRow);
dt.AcceptChanges();
ds.AcceptChanges();
ds.WriteXml(GetXmlFullPath(strXmlPath));
returntrue;
}
catch(Exception)
{
returnfalse;
}
}
#endregion
大概有的伴侣不晓得怎样用这个办法拔出数据,在前面我将用实例先容。
(5)修正纪录
修正纪录的办法要传进的参数绝对较多,由于修正纪录必要先定位到详细哪一笔记录,再修正指定列的值,以下为修正XML的办法:
#regionUpdateXmlRow
///〈summary〉
///更行切合前提的一条Xml纪录
///〈/summary〉
///〈paramname="strXmlPath"〉XML文件路径〈/param〉
///〈paramname="Columns"〉列名数组〈/param〉
///〈paramname="ColumnValue"〉列值数组〈/param〉
///〈paramname="strWhereColumnName"〉前提列名〈/param〉
///〈paramname="strWhereColumnValue"〉前提列值〈/param〉
///〈returns〉〈/returns〉
publicstaticboolUpdateXmlRow(stringstrXmlPath,string[]Columns,string[]ColumnValue,stringstrWhereColumnName,stringstrWhereColumnValue)
{
try
{
//同上一办法
stringstrXsdPath=strXmlPath.Substring(0,strXmlPath.IndexOf("."))+".xsd";
DataSetds=newDataSet();
//读xml架构,干系到列的数据范例
ds.ReadXmlSchema(GetXmlFullPath(strXsdPath));
ds.ReadXml(GetXmlFullPath(strXmlPath));
//先判别行数
if(ds.Tables.Rows.Count〉0)
{
for(inti=0;i〈ds.Tables.Rows.Count;i++)
{
//假如以后纪录为切合Where前提的纪录if(ds.Tables.Rows.ToString().Trim().Equals(strWhereColumnValue))
{
//轮回给找到行的各列赋新值
for(intj=0;j〈Columns.Length;j++)
{
ds.Tables.Rows]=ColumnValue;
}
//更新DataSet
ds.AcceptChanges();
//从头写进XML文件
ds.WriteXml(GetXmlFullPath(strXmlPath));
returntrue;
}
}
}
returnfalse;
}
catch(Exception)
{
returnfalse;
}
}
#endregion
(6)删除纪录
为了便利,删除纪录供应了三个办法,一个能够删除一切纪录,一个删除切合前提的行,另有一个删除指定Index值的行,该Index值和纪录在Data
Set中的Index值对应。删除一切纪录的办法为:
#regionDeleteXmlAllRows
///〈summary〉
///删除一切行
///〈/summary〉
///〈paramname="strXmlPath"〉XML路径〈/param〉
///〈returns〉〈/returns〉
publicstaticboolDeleteXmlAllRows(stringstrXmlPath)
{
try
{
DataSetds=newDataSet();
ds.ReadXml(GetXmlFullPath(strXmlPath));
//假如纪录条数年夜于0
if(ds.Tables.Rows.Count〉0)
{
//移除一切纪录
ds.Tables.Rows.Clear();
}
//从头写进,这时候XML文件中就只剩根节点了
ds.WriteXml(GetXmlFullPath(strXmlPath));
returntrue;
}
catch(Exception)
{
returnfalse;
}
}
#endregion
删除指定Index值的行的办法为:
#regionDeleteXmlRowByIndex
///〈summary〉
///经由过程删除DataSet中iDeleteRow这一行,然后重写Xml以完成删除指定行
///〈/summary〉
///〈paramname="strXmlPath"〉〈/param〉
///〈paramname="iDeleteRow"〉要删除的行在DataSet中的Index值〈/param〉
publicstaticboolDeleteXmlRowByIndex(stringstrXmlPath,intiDeleteRow)
{
try
{
DataSetds=newDataSet();
ds.ReadXml(GetXmlFullPath(strXmlPath));
if(ds.Tables.Rows.Count〉0)
{
//删除标记前提的行
ds.Tables.Rows.Delete();
}
ds.WriteXml(GetXmlFullPath(strXmlPath));
returntrue;
}
catch(Exception)
{
returnfalse;
}
}
#endregion
这里说一下供应此办法的缘故原由,有的时分将XML的内容读到DataSet,然后绑定到DataGrid后,因为DataGrid中只要一个模板列,而模板列里又套了表格等很多控件,这就使得我们大概没法失掉纪录对应的ID值,这个时分就能够先失掉纪录的Index值(第一举动0,第二举动1,以此类推),然后将该Index值传到办法中,就能够将该纪录删失落。
注重:利用该办法的时分,绑定到DataGrid上的DataSet和删除时用的DataSet要为统一个,也就是说Index要不异,不克不及有排序,否则会误将纪录。
偶然候我们必要删除切合前提的多行,这个时分能够用以下办法完成:
#regionDeleteXmlRows
///〈summary〉
///删除strColumn列中值为ColumnValue的行
///〈/summary〉
///〈paramname="strXmlPath"〉xml绝对路径〈/param〉
///〈paramname="strColumn"〉列名〈/param〉
///〈paramname="ColumnValue"〉strColumn列中值为ColumnValue的行均会被删除〈/param〉
///〈returns〉〈/returns〉
publicstaticboolDeleteXmlRows(stringstrXmlPath,stringstrColumn,string[]ColumnValue)
{
try
{
DataSetds=newDataSet();
ds.ReadXml(GetXmlFullPath(strXmlPath));
//先判别行数
if(ds.Tables.Rows.Count〉0)
{
//判别行多仍是删除的值多,多的for轮回放在内里
if(ColumnValue.Length〉ds.Tables.Rows.Count)
{
for(inti=0;i〈ds.Tables.Rows.Count;i++)
{
for(intj=0;j〈ColumnValue.Length;j++)
{
//找到切合前提的行if(ds.Tables.Rows.ToString().Trim().Equals(ColumnValue))
{
//删除行
ds.Tables.Rows.Delete();
}
}
}
}
else
{
for(intj=0;j〈ColumnValue.Length;j++)
{
for(inti=0;i〈ds.Tables.Rows.Count;i++)
{
//找到切合前提的行if(ds.Tables.Rows.ToString().Trim().Equals(ColumnValue))
{
//删除行
ds.Tables.Rows.Delete();
}
}
}
}
ds.WriteXml(GetXmlFullPath(strXmlPath));
}
returntrue;
}
catch(Exception)
{
returnfalse;
}
}
#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
"peopleNumdesc");//按peopleNum列降序分列
DataGrid1.DataBind();
(8)增加纪录
以下代码向XML文件中增加了一笔记录,同时给7个列赋值:
boolb;
b=OperateXmlByDataSet.WriteXmlByDataSet(
@"xml/xml_xmlDB.xml",//XML文件地点
newstring[]{
"name",//姓名字段
"peopleNum",//人数字段
"address",//地点字段
"description",//形貌字段
"require",//需求字段
"deadLine",//停止工夫字段
"IsMarried"//婚否字段
},
newstring[]{
"Asp.net程序员",//姓名字段值
"2",//人数字段值
"开国路",//地点字段值
"B/S布局程序",//形貌字段值
"asp.netc#等",//需求字段值
DateTime.Now.ToShortDateString(),//停止工夫字段值
"false"//婚否字段值
});
假如b前往值为true,暗示增加乐成,不然暗示增加失利。以上的写法我用了些偷懒的办法,好比我把数组间接放在参数,而没有别的声名,现实上你能够别的声名一个数组,然后再传到办法中。
请注重字段在数组中的地位和值在数组中的地位的对应干系。
(9)修正纪录
以下代码将找到peopleNum列值为3的行,然后将行的name、peopleNum、、description和IsMarried四个字段的值分离更新成kgdiwss、10、形貌、true。
boolb;
b=OperateXmlByDataSet.UpdateXmlRow(
@"xml/xml_xmlDB.xml",
newstring[]{"name","peopleNum","description","IsMarried"},
newstring[]{"kgdiwss","10","形貌","true"},
"peopleNum",
"3");
前往true暗示修正乐成,不然暗示修正失利。
请出格注重,字段范例为逻辑型时,赋值用的是true和false,而不是0和1。
(10)删除纪录
以下代码完成删除name列值为数组中的值的行。
boolb;
b=OperateXmlByDataSet.DeleteXmlRows(
@"xml/xml_xmlDB.xml",//XML文件路径
"name",//前提列
newstring[]{
"值1",//前提值1
"值2",//前提值2
"值3"//前提值3
});
下面代码实行乐成后,name列值为值1、值2、值3的即将被删除。
删除乐成前往true,不然前往false。
别的两种删除的办法用法对照复杂,这里就不先容了。
以上就是操纵XML的一切办法,信任能够满意很年夜一部分的利用了。但是,假如XML中的数据量对照年夜的话,利用以上办法效力大概不高,但话又说返来,假如数据量对照年夜的话,仍是选择数据库对照好。
使用filesystemobject,可以对服务器上的文件进行操作,浏览、复制、移动、删除等。有ado的支持,asp对数据库的操作非常得心应手。你甚至可以像使用本地数据库那样,管理远程主机上的数据库,对表格、记录进行各种操作。 Application:这个存储服务端的数据,如果不清除,会直到web应用程序结束才清除(例如重启站点) 代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。 如何更好的使自己的东西看上去很不错等等。其实这些都不是问题的实质,我们可以在实践中不断提升自己,不断充实自己。 它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。 掌握asp的特性而且一定要知道为什么。 接下来就不能纸上谈兵了,最好的方法其实是实践。实践,只能算是让你掌握语言特性用的。而提倡做实际的Project也不是太好,因为你还没有熟练的能力去综合各种技术,这样只能使你自己越来越迷糊。 虽然ASP也有很多网络教程。但是这些都不系统。都是半路出家,只是从一个例子告诉你怎么用。不会深入讨论,更不会将没有出现在例子里的方法都一一列举出来。 运用经典的例子。并且自己可以用他来实现一些简单的系统。如果可以对他进行进一步的修改,找出你觉得可以提高性能的地方,加上自己的设计,那就更上一个层次了,也就会真正地感到有所收获。
页:
[1]