前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CaseStudy(showcase)数据篇-从XML中获取数据

CaseStudy(showcase)数据篇-从XML中获取数据

作者头像
用户1172164
发布2018-01-16 14:08:01
4.4K0
发布2018-01-16 14:08:01
举报

做silvelight也有一段时间了,相册、游戏,刚刚完成的showcase这个小程序算是一个阶段了。这里就以showcase这个项目来做一下CaseStudy。

数据篇-从XML中获取数据

这个项目我的后台用的是asp.net开发。由于规模比较小我的数据层用的是subsonic。用它来做开发会比较敏捷。

这一回我选择的数据方式是asp.net生成xml,用silverlight中的Linq来实例化成具体的类。

这里我以读取类别信息为例子,分为3步:

1.定义xml

代码语言:js
复制
 <?xml version="1.0" encoding="utf-8" ?>
 <categories>
 <category><cid>2</cid><title>Dumex</title></category>
 <category><cid>1</cid><title>MySVW</title></category>
 <category><cid>3</cid><title>Microsoft</title></category>
 </categories>
 
 

2.定义实体类

代码语言:js
复制
  public class Category
         {
 public int cid { get; set; }
 public string title { get; set; }
         }
 

3.用linq读取

代码语言:js
复制
            

 WebClient client = new WebClient();
                 client.DownloadStringAsync(new Uri(HtmlPage.Document.DocumentUri, "category.ashx"));
                 client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(client_DownloadStringCompleted);
 
 void client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
             {
                 XmlReader reader = XmlReader.Create(new StringReader(e.Result));
                 XDocument document = XDocument.Load(reader);
                 var categories = from c in document.Descendants("category")
                                  select new Category
                                  {
                                      cid = int.Parse(c.Element("cid").Value),
                                      title = c.Element("title").Value
                                  };
 
 //todo 
         }    
 
 
 
 

在这里我选用了ashx来配合subsonic生成xml文件

代码语言:js
复制
<%@ WebHandler Language="C#" Class="category" %>
 
 using System;
 using System.Web;
 using System.Text;
 
 
 public class category : IHttpHandler {
     StringBuilder sb = new StringBuilder();
 string templateStr = "<category>" +
 "<cid>{0}</cid>" +
 "<title>{1}</title>" +
 "</category>";
 public void ProcessRequest (HttpContext context) {
         context.Response.ContentType = "text/xml";
         SC.CategoryCollection cc = new SC.CategoryCollection();
         SubSonic.Query query = SC.Category.Query().ORDER_BY("sortid", "desc");
         cc.LoadAndCloseReader(query.ExecuteReader());
         sb.AppendLine("<?xml version=\"1.0\" encoding=\"utf-8\" ?>");
         sb.AppendLine("<categories>");
 for (int i = 0; i < cc.Count; i++) {
             sb.AppendLine(string.Format(templateStr, cc[i].Id, cc[i].Title));
         }
         sb.AppendLine("</categories>");
         context.Response.Write(sb.ToString());
     }
 
 public bool IsReusable {
 get {
 return false;
         }
     }
 
 }
 
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2008-07-22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 数据篇-从XML中获取数据
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档