• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    asp.net类序列化生成xml文件实例详解

    本文实例讲述了asp.net类序列化生成xml文件的方法。分享给大家供大家参考,具体如下:

    根据设计的需求需要开发多个商品的API 原XML文件如下:

    urlset>
     url>
      loc>http://www.xxxxx.com/todaydetials.aspx?id=143/loc>
      data>
       display>
        website>爱购114/website>
        siteurl>http://www.xxxxx.com//siteurl>
        city>杭州/city>
        webSitetitle>/webSitetitle>
        image>/image>
        startTime>2011-2-9/startTime>
        endTime>2011-2-15/endTime>
        value>3880/value>
        price>2088/price>
        rebate>0.53/rebate>
        bought>0/bought>
       /display> 
      /data>
     /url>
    /urlset>
    
    

    现在需求是要根据数据库有几条商品信息 相应的API XML文件出现几个URL节点! 采用类序列化成XML文件然后读取相应生成的XML文件就可以展示多个商品XML的信息 实现代码如下:

    首先定义好XML 各个节点的数据及父子节点的关系类:

    #region 定义数据实体类xml数据结构
    public class urlset
    {
      public Listurl> urlList
      {
       get;
       set;
      }
    }
    public class url
    {
      public string loc
      {
       get;
       set;
      }
      public Listdata> dataList
      {
       get;
       set;
      }
    }
    public class data
    {
      public Listdisplay> displayList
      {
       get;
       set;
      }
    }
    public class display
    {
      public string website
      {
       get;
       set;
      }
      public string siteurl
      {
       get;
       set;
      }
      public string city
      {
       get;
       set;
      }
      public string webSitetitle
      {
       get;
       set;
      }
      public string image
      {
       get;
       set;
      }
      public string startTime
      {
       get;
       set;
      }
      public string endTime
      {
       get;
       set;
      }
      public double value
      {
       get;
       set;
      }
      public double price
      {
       get;
       set;
      }
      public double rebate
      {
       get;
       set;
      }
      public int bought
      {
       get;
       set;
      }
    }
    #endregion
    
    

    第二步:#region 定义获取网站信息实体类

    public class WebSiteInfo
    {
      /// summary>
      /// 商品标题
      /// /summary>
      public string title { get; set; }
      /// summary>
      /// 商品发布时间
      /// /summary>
      public DateTime createtime { get; set; }
      /// summary>
      /// 商品图片
      /// /summary>
      public string productimg { get; set; }
      /// summary>
      /// 市场价
      /// /summary>
      public decimal market_price { get; set; }
      /// summary>
      /// 团购价
      /// /summary>
      public decimal team_price { get; set; }
      /// summary>
      /// 折扣价
      /// /summary>
      public decimal zhekou_price { get; set; }
      /// summary>
      /// 城市名称 
      /// /summary>
      public string cityName { get; set; }
      /// summary>
      /// 商品开始时间
      /// /summary>
      public DateTime begin_time { get; set; }
      /// summary>
      /// 结束时间
      /// /summary>
      public DateTime end_time { get; set; }
      /// summary>
      /// 商家名称
      /// /summary>
      public string merchants_id { get; set; }
      /// summary>
      /// 本单详情
      /// /summary>
      public string description { get; set; }
      /// summary>
      /// 最低购买人数
      /// /summary>
      public int lowBuNo { get; set; }
      /// summary>
      /// 商家地址
      /// /summary>
      public string Address { get; set; }
      /// summary>
      /// 商家电话
      /// /summary>
      public string Telphone { get; set; }
      /// summary>
      /// 城市区号
      /// /summary>
      public string cCode { get; set; }
      /// summary>
      /// 文件夹名称
      /// /summary>
      public string folderName { get; set; }
      /// summary>
      /// 团购状态 
      /// /summary>
      public string StatusMessage { get; set; }
      /// summary>
      /// 现在购买人数
      /// /summary>
      public int nownumber { get; set; }
      /// summary>
      /// 商品编号
      /// /summary>
      public int productID { get; set; }
    }
    #endregion
    
    

    第三步:获取数据库商品信息记录并添加到对象的集合中(Arraylist):

    #region 获取xml实体类信息
    /// summary>
    /// 获取xml实体类信息
    /// /summary>
    /// returns>/returns>
    public static ArrayList GetWebModelInfo()
    {
      ArrayList list = new ArrayList();
      string strSQL = "select a.id, a.merchantsID,a.cCode,a.prodCode,a.statue,a.now_number, a.title,a.createtime,a.productimg,a.market_price,a.team_price,a.zhekou_price,a.cityName,a.begin_time,a.end_time,a.description,a.lowBuyNo,b.Address,b.Tel from tg_product as a left join tg_merchants as b on a.merchantsID=b.merchants_id where a.ispublic=1 and statue>-1 and getdate()dateadd(day,1,a.end_time) order by a.createtime desc";
      DataSet ds = FrameWork.Data.SqlHelper.ReturnDataSet(CommandType.Text, strSQL, null);
      if (ds.Tables[0].Rows.Count > 0)
      {
       foreach (DataRow dr in ds.Tables[0].Rows)
       {
        WebSiteInfo webModel = new WebSiteInfo();
        //城市名称
        webModel.cityName = dr["cityName"].ToString();
        //商品标题
        webModel.title = dr["title"].ToString();
        //商品创建时间
        webModel.createtime = Convert.ToDateTime(dr["createtime"].ToString());
        //商家名称
        webModel.merchants_id = dr["merchantsID"].ToString();
        //商品图片
        webModel.productimg = dr["productimg"].ToString();
        //市场价
        webModel.market_price = Convert.ToDecimal(dr["market_price"].ToString());
        //团购价
        webModel.team_price = Convert.ToDecimal(dr["team_price"].ToString());
        //折扣价
        webModel.zhekou_price = Convert.ToDecimal(dr["zhekou_price"].ToString());
        //开始时间
        webModel.begin_time = Convert.ToDateTime(dr["begin_time"].ToString());
        //结束时间
        webModel.end_time = Convert.ToDateTime(dr["end_time"].ToString());
        //商品说明
        webModel.description = dr["description"].ToString();
        //最低购买数量
        webModel.lowBuNo = Convert.ToInt32(dr["lowBuyNo"].ToString());
        //商家电话
        webModel.Telphone = dr["Tel"].ToString();
        //商家地址
        webModel.Address = dr["Address"].ToString();
        //城市编号
        webModel.cCode = dr["cCode"].ToString();
        //图片文件夹名称
        webModel.folderName = dr["prodCode"].ToString();
        //现在购买人数
        webModel.nownumber = Convert.ToInt32(dr["now_number"].ToString());
        //商品编号
        webModel.productID = Convert.ToInt32(dr["id"].ToString());
        int status = Convert.ToInt32(dr["statue"].ToString());
        switch (status)
        {
         case 0:
          webModel.StatusMessage = "结束";
          break;
         case 1:
          webModel.StatusMessage = "成功";
          break;
        }
        list.Add(webModel);
       }
      }
       return list;
    }
    #endregion
    
    

    最后一步将数据库读取来的信息赋值到XML 数据类型中 并序列化成XML文件保存成XML格式的文件读取文件展现到界面:

    #region 页面加载 根据数据库商品记录数生成xml文件信息
    /// summary>
    /// 页面加载 根据数据库商品记录数生成xml文件信息
    /// /summary>
    Listurl> urlList = null;
    urlset urlsetList = new urlset();
    protected void Page_Load(object sender, EventArgs e)
    {
      if (!Page.IsPostBack)
      {
        ArrayList listinfo=GetWebModelInfo();
        urlList = new Listurl>();
       for (int i = 0; i  listinfo.Count; i++)
       {
        WebSiteInfo webInfo = listinfo[i] as WebSiteInfo;
        Listdisplay> displayList = new Listdisplay>();
        display display = new display();
        display.website = "爱购114";
        display.siteurl = "http://www.xxxxx.com/";
        //城市名称
        display.city = webInfo.cityName;
        //商品标题
        display.webSitetitle = webInfo.title;
        //商品图片
        display.image = "http://211.155.235.30/tuangou/" + webInfo.folderName + "/" + webInfo.productimg;
        //商品开始时间
        display.startTime = webInfo.begin_time.ToShortDateString();
        //商品结束时间
        display.endTime = webInfo.end_time.ToShortDateString();
        //市场价
        display.value = Convert.ToDouble(webInfo.market_price);
        //团购价
        display.price = Convert.ToDouble(webInfo.team_price);
        //折扣价
        display.rebate = Convert.ToDouble(webInfo.zhekou_price);
        //现在购买的人数
        display.bought = webInfo.nownumber;
        displayList.Add(display);
        Listdata> dataList = new Listdata>();
        data data = new data();
        data.displayList = displayList;
        dataList.Add(data);
        url url = new url();
        url.loc = String.Format("http://www.xxxxx.com/todaydetials.aspx?id={0}", webInfo.productID.ToString());
        url.dataList = dataList;
        urlList.Add(url);
        urlsetList.urlList = urlList;
       }
       try
       {
        XmlSerializerNamespaces xmlns = new XmlSerializerNamespaces();
        xmlns.Add(String.Empty, String.Empty);
        //构造字符串
        StringBuilder sb = new StringBuilder();
        //将字符串写入到stringWriter对象中
        StringWriter sw = new StringWriter(sb);
        //xml序列化对象 typeof(类名)
        XmlSerializer ser = new XmlSerializer(typeof(urlset));
        //把Stream对象和urlset一起传入,序列化出一个字符串sb
        ser.Serialize(sw, urlsetList, xmlns);
        sw.Close();
        string FILE_NAME = HttpContext.Current.Server.MapPath("API/54tuan.xml");
        FileInfo fi = new FileInfo(FILE_NAME);
        //如果文件己经存在则删除该文件 
        if (fi.Exists)
        {
         if (fi.Attributes.ToString().IndexOf("ReadOnly") >= 0) {
          fi.Attributes = FileAttributes.Normal;
         }
         File.Delete(fi.Name);
        }
        //创建文件 并写入字符串
        using (StreamWriter sWrite = File.CreateText(FILE_NAME))
        {
         sWrite.Write(sb.ToString().Replace("encoding=/"utf-16/"", "encoding=/"utf-8/"").Replace("urlList>", "").Replace("/urlList>", "").Replace("dataList>", "").Replace("/dataList>", "").Replace("displayList>", "").Replace("displayList>", "").Replace("/displayList>", ""));
         sWrite.Close();
        }
        //输出序列化后xml文件
        Response.ClearContent();
        Response.ClearHeaders();
        Response.ContentType = "application/xml";
        Response.WriteFile(HttpContext.Current.Server.MapPath("API/54tuan.xml"));
        Response.Flush();
        Response.Close();
       }
       catch (Exception ex)
       {
        Response.Write(ex.Message);
       }
       finally
       {
       }
       }
    }
    #endregion
    
    

    希望本文所述对大家asp.net程序设计有所帮助。

    您可能感兴趣的文章:
    • C#实现实体类和XML相互转换
    • C#中把任意类型的泛型集合转换成SQLXML数据格式的实例
    • C#实现XML与实体类之间相互转换的方法(序列化与反序列化)
    • C#自定义处理xml数据类实例
    • Asp.Net+XML操作基类(修改,删除,新增,创建)
    • Visual Studio 2013如何使XML文件转换成类
    上一篇:.net实现网站用户登录认证
    下一篇:asp.net编程实现删除文件夹及文件夹下文件的方法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    asp.net类序列化生成xml文件实例详解 asp.net,类,序列化,生成,xml,