佳木斯湛栽影视文化发展公司

主頁(yè) > 知識(shí)庫(kù) > asp.net類(lèi)序列化生成xml文件實(shí)例詳解

asp.net類(lèi)序列化生成xml文件實(shí)例詳解

熱門(mén)標(biāo)簽:地方門(mén)戶(hù)網(wǎng)站 集中運(yùn)營(yíng)管理辦法 科大訊飛語(yǔ)音識(shí)別系統(tǒng) 服務(wù)器配置 阿里云 網(wǎng)站排名優(yōu)化 百度競(jìng)價(jià)排名 硅谷的囚徒呼叫中心

本文實(shí)例講述了asp.net類(lèi)序列化生成xml文件的方法。分享給大家供大家參考,具體如下:

根據(jù)設(shè)計(jì)的需求需要開(kāi)發(fā)多個(gè)商品的API 原XML文件如下:

urlset>
 url>
  loc>http://www.xxxxx.com/todaydetials.aspx?id=143/loc>
  data>
   display>
    website>愛(ài)購(gòu)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>

現(xiàn)在需求是要根據(jù)數(shù)據(jù)庫(kù)有幾條商品信息 相應(yīng)的API XML文件出現(xiàn)幾個(gè)URL節(jié)點(diǎn)! 采用類(lèi)序列化成XML文件然后讀取相應(yīng)生成的XML文件就可以展示多個(gè)商品XML的信息 實(shí)現(xiàn)代碼如下:

首先定義好XML 各個(gè)節(jié)點(diǎn)的數(shù)據(jù)及父子節(jié)點(diǎn)的關(guān)系類(lèi):

#region 定義數(shù)據(jù)實(shí)體類(lèi)xml數(shù)據(jù)結(jié)構(gòu)
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 定義獲取網(wǎng)站信息實(shí)體類(lèi)

public class WebSiteInfo
{
  /// summary>
  /// 商品標(biāo)題
  /// /summary>
  public string title { get; set; }
  /// summary>
  /// 商品發(fā)布時(shí)間
  /// /summary>
  public DateTime createtime { get; set; }
  /// summary>
  /// 商品圖片
  /// /summary>
  public string productimg { get; set; }
  /// summary>
  /// 市場(chǎng)價(jià)
  /// /summary>
  public decimal market_price { get; set; }
  /// summary>
  /// 團(tuán)購(gòu)價(jià)
  /// /summary>
  public decimal team_price { get; set; }
  /// summary>
  /// 折扣價(jià)
  /// /summary>
  public decimal zhekou_price { get; set; }
  /// summary>
  /// 城市名稱(chēng) 
  /// /summary>
  public string cityName { get; set; }
  /// summary>
  /// 商品開(kāi)始時(shí)間
  /// /summary>
  public DateTime begin_time { get; set; }
  /// summary>
  /// 結(jié)束時(shí)間
  /// /summary>
  public DateTime end_time { get; set; }
  /// summary>
  /// 商家名稱(chēng)
  /// /summary>
  public string merchants_id { get; set; }
  /// summary>
  /// 本單詳情
  /// /summary>
  public string description { get; set; }
  /// summary>
  /// 最低購(gòu)買(mǎi)人數(shù)
  /// /summary>
  public int lowBuNo { get; set; }
  /// summary>
  /// 商家地址
  /// /summary>
  public string Address { get; set; }
  /// summary>
  /// 商家電話
  /// /summary>
  public string Telphone { get; set; }
  /// summary>
  /// 城市區(qū)號(hào)
  /// /summary>
  public string cCode { get; set; }
  /// summary>
  /// 文件夾名稱(chēng)
  /// /summary>
  public string folderName { get; set; }
  /// summary>
  /// 團(tuán)購(gòu)狀態(tài) 
  /// /summary>
  public string StatusMessage { get; set; }
  /// summary>
  /// 現(xiàn)在購(gòu)買(mǎi)人數(shù)
  /// /summary>
  public int nownumber { get; set; }
  /// summary>
  /// 商品編號(hào)
  /// /summary>
  public int productID { get; set; }
}
#endregion

第三步:獲取數(shù)據(jù)庫(kù)商品信息記錄并添加到對(duì)象的集合中(Arraylist):

#region 獲取xml實(shí)體類(lèi)信息
/// summary>
/// 獲取xml實(shí)體類(lèi)信息
/// /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();
    //城市名稱(chēng)
    webModel.cityName = dr["cityName"].ToString();
    //商品標(biāo)題
    webModel.title = dr["title"].ToString();
    //商品創(chuàng)建時(shí)間
    webModel.createtime = Convert.ToDateTime(dr["createtime"].ToString());
    //商家名稱(chēng)
    webModel.merchants_id = dr["merchantsID"].ToString();
    //商品圖片
    webModel.productimg = dr["productimg"].ToString();
    //市場(chǎng)價(jià)
    webModel.market_price = Convert.ToDecimal(dr["market_price"].ToString());
    //團(tuán)購(gòu)價(jià)
    webModel.team_price = Convert.ToDecimal(dr["team_price"].ToString());
    //折扣價(jià)
    webModel.zhekou_price = Convert.ToDecimal(dr["zhekou_price"].ToString());
    //開(kāi)始時(shí)間
    webModel.begin_time = Convert.ToDateTime(dr["begin_time"].ToString());
    //結(jié)束時(shí)間
    webModel.end_time = Convert.ToDateTime(dr["end_time"].ToString());
    //商品說(shuō)明
    webModel.description = dr["description"].ToString();
    //最低購(gòu)買(mǎi)數(shù)量
    webModel.lowBuNo = Convert.ToInt32(dr["lowBuyNo"].ToString());
    //商家電話
    webModel.Telphone = dr["Tel"].ToString();
    //商家地址
    webModel.Address = dr["Address"].ToString();
    //城市編號(hào)
    webModel.cCode = dr["cCode"].ToString();
    //圖片文件夾名稱(chēng)
    webModel.folderName = dr["prodCode"].ToString();
    //現(xiàn)在購(gòu)買(mǎi)人數(shù)
    webModel.nownumber = Convert.ToInt32(dr["now_number"].ToString());
    //商品編號(hào)
    webModel.productID = Convert.ToInt32(dr["id"].ToString());
    int status = Convert.ToInt32(dr["statue"].ToString());
    switch (status)
    {
     case 0:
      webModel.StatusMessage = "結(jié)束";
      break;
     case 1:
      webModel.StatusMessage = "成功";
      break;
    }
    list.Add(webModel);
   }
  }
   return list;
}
#endregion

最后一步將數(shù)據(jù)庫(kù)讀取來(lái)的信息賦值到XML 數(shù)據(jù)類(lèi)型中 并序列化成XML文件保存成XML格式的文件讀取文件展現(xiàn)到界面:

#region 頁(yè)面加載 根據(jù)數(shù)據(jù)庫(kù)商品記錄數(shù)生成xml文件信息
/// summary>
/// 頁(yè)面加載 根據(jù)數(shù)據(jù)庫(kù)商品記錄數(shù)生成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 = "愛(ài)購(gòu)114";
    display.siteurl = "http://www.xxxxx.com/";
    //城市名稱(chēng)
    display.city = webInfo.cityName;
    //商品標(biāo)題
    display.webSitetitle = webInfo.title;
    //商品圖片
    display.image = "http://211.155.235.30/tuangou/" + webInfo.folderName + "/" + webInfo.productimg;
    //商品開(kāi)始時(shí)間
    display.startTime = webInfo.begin_time.ToShortDateString();
    //商品結(jié)束時(shí)間
    display.endTime = webInfo.end_time.ToShortDateString();
    //市場(chǎng)價(jià)
    display.value = Convert.ToDouble(webInfo.market_price);
    //團(tuán)購(gòu)價(jià)
    display.price = Convert.ToDouble(webInfo.team_price);
    //折扣價(jià)
    display.rebate = Convert.ToDouble(webInfo.zhekou_price);
    //現(xiàn)在購(gòu)買(mǎi)的人數(shù)
    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);
    //構(gòu)造字符串
    StringBuilder sb = new StringBuilder();
    //將字符串寫(xiě)入到stringWriter對(duì)象中
    StringWriter sw = new StringWriter(sb);
    //xml序列化對(duì)象 typeof(類(lèi)名)
    XmlSerializer ser = new XmlSerializer(typeof(urlset));
    //把Stream對(duì)象和urlset一起傳入,序列化出一個(gè)字符串sb
    ser.Serialize(sw, urlsetList, xmlns);
    sw.Close();
    string FILE_NAME = HttpContext.Current.Server.MapPath("API/54tuan.xml");
    FileInfo fi = new FileInfo(FILE_NAME);
    //如果文件己經(jīng)存在則刪除該文件 
    if (fi.Exists)
    {
     if (fi.Attributes.ToString().IndexOf("ReadOnly") >= 0) {
      fi.Attributes = FileAttributes.Normal;
     }
     File.Delete(fi.Name);
    }
    //創(chuàng)建文件 并寫(xiě)入字符串
    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

希望本文所述對(duì)大家asp.net程序設(shè)計(jì)有所幫助。

您可能感興趣的文章:
  • C#實(shí)現(xiàn)實(shí)體類(lèi)和XML相互轉(zhuǎn)換
  • C#中把任意類(lèi)型的泛型集合轉(zhuǎn)換成SQLXML數(shù)據(jù)格式的實(shí)例
  • C#實(shí)現(xiàn)XML與實(shí)體類(lèi)之間相互轉(zhuǎn)換的方法(序列化與反序列化)
  • C#自定義處理xml數(shù)據(jù)類(lèi)實(shí)例
  • Asp.Net+XML操作基類(lèi)(修改,刪除,新增,創(chuàng)建)
  • Visual Studio 2013如何使XML文件轉(zhuǎn)換成類(lèi)

標(biāo)簽:廣西 威海 烏蘭察布 甘孜 隨州 西雙版納 梧州 開(kāi)封

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《asp.net類(lèi)序列化生成xml文件實(shí)例詳解》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢(xún)

    • 400-1100-266
    鹤岗市| 霍州市| 札达县| 漳州市| 丹阳市| 江油市| 进贤县| 铅山县| 敦化市| 静海县| 隆德县| 灵川县| 肥乡县| 双峰县| 和平县| 彭阳县| 历史| 永城市| 昔阳县| 广东省| 宁晋县| 凌海市| 台州市| 云和县| 开化县| 互助| 汝城县| 会理县| 汝州市| 闽清县| 兰坪| 宾川县| 平和县| 正定县| 孝感市| 彭泽县| 吉木乃县| 绵竹市| 德钦县| 兴和县| 锦屏县|