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

it2022-09-24  3

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

数据篇-从XML中获取数据

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

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

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

定义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 > 定义实体类       public   class  Category     {          public   int  cid {  get set ; }          public   string  title {  get set ; }     }     用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 ;         }     } }

 

作者:nasa 出处:nasa.cnblogs.com 联系:nasa_wz@hotmail.com QQ:12446006

转载于:https://www.cnblogs.com/nasa/archive/2008/07/22/1248968.html

相关资源:数据结构—成绩单生成器
最新回复(0)