volcano

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
说到用.NET来创建XML文件,大家都会想到System.Xml.XmlDocument这个类吧.但是我在实际开发过程中却是用的另外一种方法,(用数据集直接写入XML文件).今天拿给大家共享一下:

比如要生成这样一个XML文件
<?xml version="1.0" encoding="utf-8" ?>
<books>
    
<book>
        
<name>name1</name>
        
<price>22.8</price>
    
</book>
    
<book>
        
<name>name2</name>
        
<price>25.8</price>
    
</book>
</books>
我们可以用可视化数据集生成器:创建一个名为books.xsd的数据集: 
 
然后代码如下:
DataSet ds=new books();
            DataTable dt
=ds.Tables["book"];

            DataRow dr
=dt.NewRow();
            dr[
"name"]="name1";
            dr[
"price"]="22.8";
            dt.Rows.Add(dr);

            dr
=dt.NewRow();
            dr[
"name"]="name2";
            dr[
"price"]="25.8";
            dt.Rows.Add(dr);

            ds.WriteXml(
"books.xml",XmlWriteMode.IgnoreSchema);
是不是十分直观,只需操作Dataset就够了.这个简单的可能说明不了什么问题,再来一个复杂的:

将上面那个XML改造一下:
<?xml version="1.0" encoding="utf-8" ?>
<books>
    
<book id=1>
        
<name>name1</name>
        
<price>22.8</price>
        
<detail>
            
<address>beijing</address>
            
<author>mike</author>
            
<time>2004-10-09</time>
        
</detail>
    
</book>
    
<book id=2>
        
<name>name2</name>
        
<price>25.8</price>
        
<detail>
            
<address>shanghai</address>
            
<author>joe</author>
            
<time>2005-09-09</time>
        
</detail>
    
</book>
</books>
这样算是一个比较复杂的了吧,节点多,而且带属性.同样的,我们要设计一个dataset,不过和上面的有些不同,如下:


生成代码如下:
DataSet ds=new books();
            DataTable dt
=ds.Tables["book"];

            DataRow dr
=dt.NewRow();
            dr[
"ID"]="1";
            dr[
"name"]="name1";
            dr[
"price"]="22.8";
            dt.Rows.Add(dr);

            DataTable dt2
=ds.Tables["detail"];
            DataRow dr2
=dt2.NewRow();
            dr2[
"address"]="beijing";
            dr2[
"author"]="mike";
            dr2[
"time"]="2004-10-09";
            dt2.Rows.Add(dr2);
            dr2.SetParentRow(dr);

            dr
=dt.NewRow();
            dr[
"ID"]="2";
            dr[
"name"]="name2";
            dr[
"price"]="25.8";
            dt.Rows.Add(dr);

            dt2
=ds.Tables["detail"];
            dr2
=dt2.NewRow();
            dr2[
"address"]="shanghai";
            dr2[
"author"]="joe";
            dr2[
"time"]="2005-09-09";
            dt2.Rows.Add(dr2);
            dr2.SetParentRow(dr);

            ds.WriteXml(
"books.xml",XmlWriteMode.IgnoreSchema);
是不是感觉想在操作数据库啊,其实就是.以上因为做例子所以数据都是手工加的.在实际应用中,数据集使用通过ADO.net Fill进去的.这样要生成XML文件就只需关心数据,不必关心怎样生成了.一切都是可视化.数据结构完全可以通过Dataset来反映.

            如果XML文件要修改,可以用 ds.ReadXml("books.xml",XmlReadMode.IgnoreSchema);来填充dataset,然后修改数据集实例化对象的数据,最后再用ds.WriteXml("books.xml",XmlWriteMode.IgnoreSchema);保存.

            我在这里只给大家一个思路和方法,具体的问题要看使用什么方法更简单更直观.以便后期维护.

posted on 2005-11-04 14:29  volcano  阅读(2630)  评论(13编辑  收藏  举报