CaseStudy(showcase)数据篇-从XML中获取数据
时间:2022-04-22
本文章向大家介绍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;
}
}
}
- WCF 技术剖析之三十三:你是否了解WCF事务框架体系内部的工作机制?[下篇]
- 学习SpringMVC——从HelloWorld开始
- 小程序年底重磅更新,小游戏上线,最强入口也来了!
- 学习SpringMVC——如何获取请求参数
- 谈谈关于MVP模式中V-P交互问题
- 学习Spring——两个你熟悉的不能再熟悉的场景使用
- 学习Spring——依赖注入
- 机会真的多吗?
- 浅析Hadoop大数据分析与应用
- WCF技术剖析之三十三:你是否了解WCF事务框架体系内部的工作机制?[上篇]
- Java豆瓣电影爬虫——小爬虫成长记(附源码)
- Java豆瓣电影爬虫——抓取电影详情和电影短评数据
- 日本科技振兴理事:AI科学家应有红线意识
- Java豆瓣电影爬虫——使用Word2Vec分析电影短评数据
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- [Oracle 日常管理]使用BBED定位数据位置
- [Oracle 日常管理]表的相关操作
- JsonPath实践(二)
- C# 使用OpenCV在一张图片里寻找人脸
- 【DB笔试面试858】在Oracle中,ipcs和ipcrm命令的作用有哪些?
- Qt音视频开发13-mpv录像存储
- Oracle参数解析(spfile)
- ROS2机器人笔记20-08-18
- C sharp实例:华盾武器门数据接收和解析
- JsonPath实践(三)
- 有序链表转换二叉搜索树
- 128. 最长连续序列
- 【DB笔试面试859】在Oracle中,内核参数kernel.shmall、kernel.shmall等分别代表什么含义?
- Nginx配置SSL证书
- java_Object类、日期时间类、System类、包装类