另类XML文件生成法

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

比如要生成这样一个XML文件
None.gif <? xml version="1.0" encoding="utf-8"  ?>
None.gif
< books >
None.gif    
< book >
None.gif        
< name > name1 </ name >
None.gif        
< price > 22.8 </ price >
None.gif    
</ book >
None.gif    
< book >
None.gif        
< name > name2 </ name >
None.gif        
< price > 25.8 </ price >
None.gif    
</ book >
None.gif
</ books >
我们可以用可视化数据集生成器:创建一个名为books.xsd的数据集: 
  1.JPG
然后代码如下:
None.gif DataSet ds = new  books();
None.gif            DataTable dt
= ds.Tables[ " book " ];
None.gif
None.gif            DataRow dr
= dt.NewRow();
None.gif            dr[
" name " ] = " name1 " ;
None.gif            dr[
" price " ] = " 22.8 " ;
None.gif            dt.Rows.Add(dr);
None.gif
None.gif            dr
= dt.NewRow();
None.gif            dr[
" name " ] = " name2 " ;
None.gif            dr[
" price " ] = " 25.8 " ;
None.gif            dt.Rows.Add(dr);
None.gif
None.gif            ds.WriteXml(
" books.xml " ,XmlWriteMode.IgnoreSchema);
是不是十分直观,只需操作Dataset就够了.这个简单的可能说明不了什么问题,再来一个复杂的:

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

生成代码如下:
None.gif DataSet ds = new  books();
None.gif            DataTable dt
= ds.Tables[ " book " ];
None.gif
None.gif            DataRow dr
= dt.NewRow();
None.gif            dr[
" ID " ] = " 1 " ;
None.gif            dr[
" name " ] = " name1 " ;
None.gif            dr[
" price " ] = " 22.8 " ;
None.gif            dt.Rows.Add(dr);
None.gif
None.gif            DataTable dt2
= ds.Tables[ " detail " ];
None.gif            DataRow dr2
= dt2.NewRow();
None.gif            dr2[
" address " ] = " beijing " ;
None.gif            dr2[
" author " ] = " mike " ;
None.gif            dr2[
" time " ] = " 2004-10-09 " ;
None.gif            dt2.Rows.Add(dr2);
None.gif            dr2.SetParentRow(dr);
None.gif
None.gif            dr
= dt.NewRow();
None.gif            dr[
" ID " ] = " 2 " ;
None.gif            dr[
" name " ] = " name2 " ;
None.gif            dr[
" price " ] = " 25.8 " ;
None.gif            dt.Rows.Add(dr);
None.gif
None.gif            dt2
= ds.Tables[ " detail " ];
None.gif            dr2
= dt2.NewRow();
None.gif            dr2[
" address " ] = " shanghai " ;
None.gif            dr2[
" author " ] = " joe " ;
None.gif            dr2[
" time " ] = " 2005-09-09 " ;
None.gif            dt2.Rows.Add(dr2);
None.gif            dr2.SetParentRow(dr);
None.gif
None.gif            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 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/volcano/archive/2005/11/04/268869.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值