zoukankan      html  css  js  c++  java
  • 另类XML文件生成法

    说到用.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);保存.

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

  • 相关阅读:
    (转)MapReduce源码分析总结
    Linux SSH远程文件/目录传输命令scp
    Hadoop学习总结:MapReduce的过程解析
    Python 3 的新特性zz
    Tutorial Learn Python in 10 minutes[zz]
    Hadoop学习总结:Hadoop的运行痕迹
    Python 绝对简明手册
    Linux命令总结
    [Error] 'strlen' was not declared in this scope
    养成C#编程好习惯
  • 原文地址:https://www.cnblogs.com/volcano/p/268869.html
Copyright © 2011-2022 走看看