xml文件可以作为DataSet 的一种存储方式,因此我们可以将一些自定义的数据作为若干表放入DataSet,然后将DataSet的结构和数据写入到xml文件,当需要我们存储的数据时,只用将xml的文件里的数据读入DataSet,我们只用访问DataSet的表,及及相应的行就行了.若要修改数据,只需要改变DataSet中的表里面的行,然后写回xml就行了,由于xml是作为文件存储,因此在发布程序时,只需要随程序拷贝到相应的目录就行了,
下面是我的一个xml配置文件,建议用户不要自己编辑xml的结构,最好是用程序生成一个DataSet,里面定义若干表的信息然后写入xml中就行了,
//已调试可以直接运行
DataSet ds=new DataSet();
DataTable dt=new DataTable("cfg");//表名
DataColumn col=new DataColumn("id",typeof(long));
col.AutoIncrement=true;//自动增长
dt.Columns.Add(col);
col=new DataColumn("userName",typeof(string));
col.AllowDBNull=false;//不允许为空
dt.Columns.Add(col);
col=new DataColumn("age",typeof(int));
col.DefaultValue=20;//默认值
dt.Columns.Add(col);
DataRow row=dt.NewRow();//添加行
row["userName"]="hammergo";
dt.Rows.Add(row);
ds.Tables.Add(dt);
ds.AcceptChanges();
ds.WriteXml("config.xml",XmlWriteMode.WriteSchema);
//运行后生成的xml文件内容
<?xml version="1.0" standalone="yes"?>
<NewDataSet>
<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:Locale="zh-CN">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element name="cfg">
<xs:complexType>
<xs:sequence>
<xs:element name="id" msdata:AutoIncrement="true" type="xs:long" minOccurs="0" />
<xs:element name="userName" type="xs:string" />
<xs:element name="age" type="xs:int" default="20" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
<cfg>
<id>0</id>
<userName>hammergo</userName>
<age>20</age>
</cfg>
</NewDataSet>
//读取及修改xml文件
DataSet ds=new DataSet();
ds.ReadXml("config.xml",XmlReadMode.ReadSchema);
DataTable dt=ds.Tables["cfg"];//xml文件可保存一个DataSet的数据,它包括多个表
//查找行
DataRow []rows=dt.Select(string.Format("userName = '{0}'","hammergo"));
if(rows.Length>0)
{
rows[0]["userName"]="zfking";
rows[0].EndEdit();
}
//再添加一行
DataRow row=dt.NewRow();
row["userName"]="test";
row["age"]=24;
dt.Rows.Add(row);
dt.AcceptChanges();
//写回,覆盖的方式
ds.WriteXml("config.xml",XmlWriteMode.WriteSchema);
//执行后的文件
<?xml version="1.0" standalone="yes"?>
<NewDataSet>
<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:Locale="zh-CN">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element name="cfg">
<xs:complexType>
<xs:sequence>
<xs:element name="id" msdata:AutoIncrement="true" type="xs:long" minOccurs="0" />
<xs:element name="userName" type="xs:string" />
<xs:element name="age" type="xs:int" default="20" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
<cfg>
<id>0</id>
<userName>zfking</userName>
<age>20</age>
</cfg>
<cfg>
<id>1</id>
<userName>test</userName>
<age>24</age>
</cfg>
</NewDataSet>
//这样我们读取或修改自己的配置文件是不是很方便