Silverlight读取XML数据.docx
《Silverlight读取XML数据.docx》由会员分享,可在线阅读,更多相关《Silverlight读取XML数据.docx(10页珍藏版)》请在冰豆网上搜索。
Silverlight读取XML数据
∙
∙网站地图
∙
∙设为首页
∙
∙加入收藏
∙
∙ 首页
Home
∙
∙文摘空间
Documents
∙
∙C#视角
C#View
∙
∙.Net视角
.NetView
∙
∙C#问询
C#Enquiry
∙
∙.Net问询
.NetEnquiry
∙
∙用户中心
UserCenter
∙
∙关于我们
AboutUs
∙
Tag:
开源,源码,控件,控件开发,皮肤,Skin,MVC,WCF,Remoting,AJAX,JQuery,Flex,Silverlight,SQLServer,设计模式,框架,正则,Web服务,数据库,PetShop,WordPress,Silverlight读取*.XML数据
热门搜索:
控件美化winform控件开发源码下载socket控件框架开源源码窗体换肤skin
-
-
您的位置:
>> 首页 >> .Net博文 >> Silverlight读取*.XML数据
Silverlight读取*.XML数据
2009-11-13 来自:
CSDN博客 字体大小:
【大 中 小】
∙摘要:
本文介绍Silverlight读取*.XML数据
∙
-
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Net;
usingSystem.Windows;
usingSystem.Windows.Controls;
usingSystem.Windows.Documents;
usingSystem.Windows.Input;
usingSystem.Windows.Media;
usingSystem.Windows.Media.Animation;
usingSystem.Windows.Shapes;
usingSystem.Xml;
usingSystem.Xml.Linq;
usingSystem.IO;
usingSystem.Text;
namespaceSLshaw
{
publicpartialclassMainPage:
UserControl
{
publicMainPage()
{
InitializeComponent();
}
privatevoidbtnXML_Click(objectsender,RoutedEventArgse)
{
stringXpath=@"shadowinswf.xml";
StringBuildersb=newStringBuilder();
using(XmlReaderreader=XmlReader.Create(Xpath))
{
while(reader.Read())
{
if(reader.IsStartElement()&&"window"==reader.LocalName.ToLower())
{
sb.Append("state="+reader.GetAttribute("state".ToLower())+"\r\n");
using(XmlReaderitemreader=reader.ReadSubtree())
{
while(itemreader.Read())
{
if(itemreader.IsStartElement())
{
if("title"==itemreader.LocalName.ToLower())
{
sb.Append("title:
"+itemreader.ReadElementContentAsString()+"\r\n");
}
elseif("os"==itemreader.LocalName.ToLower())
{
sb.Append("os:
"+itemreader.ReadElementContentAsString()+"\r\n");
}
elseif("description"==itemreader.LocalName.ToLower())
{
sb.Append("description:
"+itemreader.ReadElementContentAsString()+"\r\n");
}
elseif("img"==itemreader.LocalName.ToLower())
{
sb.Append("img:
"+itemreader.ReadElementContentAsString()+"\r\n");
}
elseif("uuid"==itemreader.LocalName.ToLower())
{
sb.Append("uuid:
"+itemreader.ReadElementContentAsString());
}
}
}
}
this.txtXML.Text=sb.ToString();
}
}
}
}
}
}
参考文章:
【
【
【
本章中的QuickStart示例演示如何使用Silverlight中的.NETFramework子集部分来得到远程的XML内容,使用XmlReader来读入内容,以及使用StringBuilder和XmlWriter来将内容输出到XAML中.
运行查看想要在基于Silverlight的应用程序中做到以上的功能,你需要准备以下步骤:
使用BrowserHttpWebRequest来得到远程XML源.
使用XmlReader来读取XML文件.
使用XmlWriter来将XML内容写入到一个StringBuilder对象中.
输出XAML内容到页中.
要求(availablefromtheSilverlightdownloadsite):
MicrosoftSilverlight1.1Alpha.
MicrosoftVisualStudioCodeName"Orcas"Beta1.
MicrosoftSilverlightToolsAlphaforVisualStudioCodeName"Orcas"Beta1.
ASilverlightproject.Forinstructions,seeHowto:
CreateaSilverlightProject.
使用BrowserHttpWebRequest来得到远程XML内容
创建一个BrowserHttpWebRequest实例,并将你想要调用的资源的UniformResourceIdentifier(URI)传入.你可以请求一个在同一个服务器上的文件.例如,你可以得到示例中的rssfeed.xml文件(单击查看源文件按钮)然后复制到你project中的source文件夹中.
CS
HttpWebRequestrequest=newBrowserHttpWebRequest(newUri(url));
VB
DimrequestAsNewBrowserHttpWebRequest(NewUri(url))
注意
如果想得到不同域中的XMLdocument,请使用Webservice.想了解如何使用Webservice,查看ExposingWebServicestoClientScriptinASP.NETAJAX.
调用GetResponse方法来得到HttpWebResponse对象,它包含了你请求资源的响应.
CS
HttpWebResponseresponse=request.GetResponse();
VB
Dimresponse=request.GetResponse()
使用HttpWebResponse.GetResponseStream方法以流的方式得到服务器对你请求的响应.
CS
Streamcontent=response.GetResponseStream();
VB
Dimcontent=response.GetResponseStream()
在你得到response对象后,请以Close()方法来关闭这个资源请求.
CS
response.Close();
VB
response.Close()
使用XMLReader来读取XML
调用Create()方法然后给它传入一个StreamReader类的实例,这样你就创建了一个XmlReader对象.
CS
using(XmlReaderreader=XmlReader.Create(newStreamReader(content)))
VB
UsingreaderAsXmlReader=XmlReader.Create(NewStreamReader(content))
开始读取这个包含返回内容的stream.
CS
while(reader.Read())
VB
While(reader.Read())
寻找名称为"item"的元素.它表明RSSfeeditem就在当前节点中.
CS
if((reader.IsStartElement())&&("item"==reader.LocalName))
VB
If((reader.IsStartElement())And("item"=reader.LocalName))Then
创建一个XmlReader类型的itemReader对象,使用XmlReader的ReadSubTree()方法来访问所有的"item"元素.itemReader即能得到所有当前的RSSitem数据.
CS
using(XmlReaderitemReader=reader.ReadSubtree())
VB
UsingitemReaderAsXmlReader=reader.ReadSubtree()
调用itemReader对象的Read()方法在RSSfeed中来搜索"title"和"link"元素.
while(itemReader.Read())
{
if(itemReader.IsStartElement())
{
if("title"==itemReader.LocalName)
{
}
elseif("link"==itemReader.LocalName)
{
}
}
}
WhileitemReader.Read()
If(itemReader.IsStartElement())Then
If("title"=itemReader.LocalName)Then
ElseIf("link"=itemReader.LocalName)Then
EndIf
EndIf
EndWhile你不需要调用reader和itemReader的Close方法,因为using申明定义的对象将在括号结束时自动disposed.
使用XMLWriter来写XML成为一个StringBuilderobject
创建一个XmlWriter并传入一个它将要写入内容并用来代表XAML内容的StringBuilder对象.
CS
StringBuilderxamlString=newStringBuilder();
using(XmlWriterwriter=XmlWriter.Create(xamlString))
VB
DimxamlStringAsNewStringBuilder()
UsingwriterAsXmlWriter=XmlWriter.Create(xamlString)
注意
你可以使用XamlWriter来创建XAML控件,或者你有了XmlWriter对象,你可以改变它为XamlWriter.
写入XAML元素.在writer结束时,你可以将这些元素控件添加到XAML页中.下面的示例添加了Canvas元素.它同时还添加了TextBlock子元素到Canvas下.TextBlock元素必须含有Canvas.Top参数来定位它在Canvas对象的什么位置上.你同样还要设置它显示出来的值.
//WriteCanvaselement.
writer.WriteStartElement("Canvas");
//WritechildelementsforCanvas.
writer.WriteStartElement("TextBlock");
writer.WriteAttributeString("Canvas.Top",0);
writer.WriteAttributeString("Text",
"Title:
"+itemReader.ReadElementContentAsString());
//EndTextBlockelement.
writer.WriteEndElement();
//EndCanvaselement.
writer.WriteEndElement();
'WriteCanvaselement.
writer.WriteStartElement("Canvas")
'WritechildelementsforCanvas.
writer.WriteStartElement("TextBlock")
writer.WriteAttributeString("Canvas.Top",0)
writer.WriteAttributeString("Text",_
"Title:
"&itemReader.ReadElementContentAsString())
'EndTextBlockelement.
writer.WriteEndElement()
'EndCanvaselement.
writer.WriteEndElement()
调用Flush()方法来flushxamlString.缓冲的内容
CS
writer.Flush();
VB
writer.Flush()
你不需要调用writer的Close方法,因为using申明定义的对象将在括号结束时自动disposed.
将内容写入XAML页
从string中来创建一个XAMLcontrols.
CS
System.Windows.DependencyObjectcontrols=
XamlReader.Load(xamlString.ToString());
VB
DimcontrolsAsSystem.Windows.DependencyObject=_
XamlReader.Load(xamlString.ToString())
添加controls到根Canvas的子对象集中.
CS
this.Children.Add(controlsasVisual);
VB
Me.Children.Add(controls)
作者:
张俊飞
[返回顶部]
上一篇:
Silverlight数据内容滚动的问题 下一篇:
Pythonfor.net脚本调用dotnet框架
相关文章:
打印收藏文章关闭
该文章已有0条评论我要发表评论
热门文章
∙·C#轻松实现对窗体(Form..
∙·C#WinForm控件美化扩展系..
∙·C#实现完整功能的截图控..
∙·C#WinForm控件美化扩展系..
∙·C#UDP(Socket)异步传输..
∙·C#使用GDI+绘制漂亮的Too..
∙·C#实现完整功能的截图控..
∙·C#WinForm控件美化扩展系..
∙·C#自定义控件开发<一&..
∙·C#实现TrackBar控件美化..
推荐文章
∙·CSDN论坛学习工具(CSDNS..
∙·javascript获取元素位置与..
∙·图片延迟加载实现
∙·js拖拽的效果类和dom-drag..
∙·JQuery实现离开页面时检测..
∙·javascript实现关键字高..
∙·网页设计中网页到底该多宽..
∙·eval与bind区别
∙·Response.Redirect、Respo..
∙·对字符串应用HTML编码防..
关于我们 | 网站地图 | 广告服务 | 联系我们
作品版权作者所有,如果无意之中侵犯了你的版权请来信告知,本站将在3个工作日内删除。
CopyRight@2008-2012Allrightsreserved
桂ICP备11001120号
客户服务信箱:
starts_2000@
-
-