Silverlight(19) - 2.0通信之调用REST服务,处理JSON格式, XML格式, RSS/ATOM格式的数据
2008-12-08 11:51:48 来源:WEB开发网Xml.xaml
<UserControl x:Class="Silverlight20.Communication.Xml"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<StackPanel HorizontalAlignment="Left" Width="600">
<TextBox x:Name="txtMsgXml" Margin="5" />
<TextBox x:Name="txtMsgXml2" Margin="5" />
</StackPanel>
</UserControl>
Xml.xaml.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Xml.Linq;
using System.IO;
namespace Silverlight20.Communication
{
public partial class Xml : UserControl
{
public Xml()
{
InitializeComponent();
// 演示如何处理 XML(对象)
XmlDemo();
// 演示如何处理 XML(集合)
XmlDemo2();
}
/**//// <summary>
/// 演示如何处理 XML(对象)
/// </summary>
void XmlDemo()
{
// REST 服务的 URL
Uri uri = new Uri("http://localhost:3036/REST.svc/User/webabcd/xml", UriKind.Absolute);
// 实例化 WebClient
System.Net.WebClient client = new System.Net.WebClient();
client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(xml_DownloadStringCompleted);
client.DownloadStringAsync(uri);
txtMsgXml.Text = "读取 XML(对象) 数据中。。。";
}
void xml_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
if (e.Error != null)
{
// 发生错误的话,则打印出来
txtMsgXml.Text = e.Error.ToString();
return;
}
// 将获得的字符串转换为 XML(对象)
var buffer = System.Text.Encoding.UTF8.GetBytes(e.Result);
var ms = new MemoryStream(buffer);
XElement xmlObject = XElement.Load(ms);
txtMsgXml.Text = e.Result + "rn";
XNamespace ns = "http://webabcd.cnblogs.com/";
txtMsgXml.Text += string.Format("姓名: {0}, 生日: {1}",
(string)xmlObject.Element(ns + "Name"),
((DateTime)xmlObject.Element(ns + "DayOfBirth")).ToString("yyyy-MM-dd"));
/**//*
* 总结:
* XElement - 表示一个 XML 元素
* XElement.Element - XML 元素内的 XML 元素
* XElement.Attribute - XML 元素内的 XML 属性
* XElement.Load(Stream) - 使用指定流创建一个 XElement 对象
* XElement.Parse(String) - 解析指定的 XML 字符串为一个 XElement 对象
* XAttribute - 表示一个 XML 属性
*/
}
/**//// <summary>
/// 演示如何处理 XML(集合)
/// </summary>
void XmlDemo2()
{
// REST 服务的 URL
Uri uri = new Uri("http://localhost:3036/REST.svc/Users/xml", UriKind.Absolute);
// 实例化 WebClient
System.Net.WebClient client = new System.Net.WebClient();
client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(xml2_DownloadStringCompleted);
client.DownloadStringAsync(uri);
txtMsgXml2.Text = "读取 XML(集合) 数据中。。。";
}
void xml2_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
if (e.Error != null)
{
// 发生错误的话,则打印出来
txtMsgXml2.Text = e.Error.ToString();
return;
}
// 将获得的字符串转换为 XML(集合)
XDocument xmlObject = XDocument.Parse(e.Result);
txtMsgXml2.Text = e.Result + "rn";
XNamespace ns = "http://webabcd.cnblogs.com/";
var obj = from p in xmlObject.Elements(ns + "ArrayOfUser").Elements(ns + "User")
where p.Element(ns + "Name").Value == "webabcd02"
select new { Name = (string)p.Element(ns + "Name"), DayOfBirth = (DateTime)p.Element(ns + "DayOfBirth") };
txtMsgXml2.Text += string.Format("姓名: {0}, 生日: {1}",
obj.First().Name,
obj.First().DayOfBirth.ToString("yyyy-MM-dd"));
/**//*
* 总结:
* LINQ to XML 相当的方便
*/
}
}
}
Tags:Silverlight 通信 调用
编辑录入:爽爽 [复制链接] [打 印]- ››silverlight全屏显示图片
- ››Silverlight MVVM 模式(一) 切近实战
- ››调用已注册会员人数和最新会员名称
- ››Silverlight for Windows Phone 7开发系列(1):...
- ››Silverlight for Windows Phone 7开发系列(2):...
- ››Silverlight for Windows Phone 7开发系列(3):...
- ››Silverlight for Windows Phone 7开发系列(4):...
- ››Silverlight for Symbian
- ››调用android系统自带功能
- ››调用HHA_CompileHHP编译chm工程
- ››调用所有的 android activity 的实现
- ››调用 Android 内置图片的方法
更多精彩
赞助商链接