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

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

数据篇-从XML中获取数据

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

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

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

1.定义xml

 <?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.定义实体类

  public class Category
         {
 public int cid { get; set; }
 public string title { get; set; }
         }
 

3.用linq读取

            

 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文件

<%@ 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;
         }
     }
 
 }
 

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏菩提树下的杨过

asp.net与asp的session共享 及 asp的请求拦截

asp.net 与 asp 的session是无法直接共享的(底层的处理dll也不一样),要想互通session,只能用变通的办法: 一、asp.net -> ...

2467
来自专栏草根专栏

用VSCode开发一个asp.net core2.0+angular5项目(5): Angular5+asp.net core 2.0 web api文件上传

这部分就讲从angular5的客户端上传图片到asp.net core 2.0的 web api. 这是需要的源码: https://pan.baidu.com...

3935
来自专栏魏琼东

本人为巨杉数据库(开源NoSQL)写的C#驱动,支持Linq,全部开源,已提交github

     这些年在做AgileEAS.NET SOA 中间件平台的推广、技术咨询服务过程之中,特别是针对我们最熟悉的医疗行业应用之中,针对大数据分析,大并发性能...

990
来自专栏跟着阿笨一起玩NET

关于asp.net与winform导出excel的代码

一、asp.net中导出Execl的方法: 在asp.net中导出Execl有两种方法,一种是将导出的文件存放在服务器某个文件夹下面,然后将文件地址输出在...

911
来自专栏飞扬的花生

Html5上传插件封装

      前段时间将flash的上传控件替换成使用纯js实现的,在此记录 1.创建标签 <div class="camera-area" style="dis...

3208
来自专栏跟着阿笨一起玩NET

WinForm中DataGridView验证单元格输入的是数字

     事件:DataGridView验证单元格输入的是数字,DataGridView源数据是从数据库读取的。

2051
来自专栏听雨堂

ASP.NET TreeView相关问题

1、用代码在treeview web控件中,添加node的方法 表字段:编号,父编号,名称 数据: 1 0 中华人民共和国 2 1 湖南 3 1 湖北...

1987
来自专栏游戏杂谈

Unity项目中文字的统一管理

一款游戏在研发初期就需要考虑多语言的问题,否则后期在进行多国语言版本时就面临着巨大的成本。鉴于之前页游的经验,其它同事设计出读取Excel的方式来管理所有的文字...

1101
来自专栏丑胖侠

《Drools7.0.0.Final规则引擎教程》第4章 4.3 日历

日历 日历可以单独应用于规则中,也可以和timer结合使用在规则中使用。通过属性calendars来定义日历。如果是多个日历,则不同日历之间用逗号进行分割。 在...

26010
来自专栏木宛城主

两天完成一个小型工程报价系统(三层架构)

花了两天,整理了一下三层架构,顺便练了一个小型三层架构——工程报价系统。 功能很简单,完成基本的增删改查 搭建项目三层结构 ? 界面的设计以及美化 ...

3189

扫码关注云+社区