C# xml读写与dataset结合

  • Post author:
  • Post category:其他





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






///




版权声明:本文为kissyougoodby原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。