大佬教程收集整理的这篇文章主要介绍了Silverlight读取*.XML数据,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
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;
using System.Xml.Linq;
using System.IO;
using System.Text;
namespace SLshaw
{
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
}
private void btnXML_Click(object sender,RoutedEventArgs E)
{
String Xpath = @"shadowinswf.xml";
StringBuilder sb = new StringBuilder();
using (XmlReader reader = XmlReader.Create(Xpath))
{
while (reader.Read())
{
if (reader.IsStartElement() && "window" == reader.LocalName.ToLower())
{
sb.Append("state= " + reader.GetAttribute("state".ToLower()) + "/r/n");
using (XmlReader itemreader = reader.ReadSubtree())
{
while (itemreader.Read())
{
if (itemreader.IsStartElement())
{
if ("title" == itemreader.LocalName.ToLower())
{
sb.Append("title: " + itemreader.ReadElementContentAsString() + "/r/n");
}
else if ("os" == itemreader.LocalName.ToLower())
{
sb.Append("os: " + itemreader.ReadElementContentAsString() + "/r/n");
}
else if ("description" == itemreader.LocalName.ToLower())
{
sb.Append("description: " + itemreader.ReadElementContentAsString() + "/r/n");
}
else if ("img" == itemreader.LocalName.ToLower())
{
sb.Append("img: " + itemreader.ReadElementContentAsString() + "/r/n");
}
else if ("uuid" == itemreader.LocalName.ToLower())
{
sb.Append("uuid: " + itemreader.ReadElementContentAsString());
}
}
}
}
this.txtXMl.Text = sb.ToString();
}
}
}
}
}
}
【http://www.lan27.com/Article/200705/946.htm】
【http://msdn.microsoft.com/en-us/library/cc189040(VS.95).aspx】
【http://msdn.microsoft.com/zh-cn/vstudio/cc838250(VS.95).aspx】
本章中的QuickStart 示例演示如何使用Silverlight中的 .NET Framework 子集部分来得到远程的 XML内容,使用XmlReader来读入内容,以及使用StringBuilder 和 XmlWriter来将内容@L_944_22@到XAML 中.
运行 查看 想要在基于Silverlight的应用程序中做到以上的功能,你需要准备以下步骤:
使用BrowserhttpWebrequest来得到远程 XML源 .
使用XmlReader来读取XML文件.
使用XmlWriter来将XML内容写入到一个StringBuilder 对象中.
@L_944_22@XAML内容到页中.
要求 (available from the Silverlight download sitE):
@H_216_19@microsoft Silverlight 1.1 Alpha.
@H_216_19@microsoft Visual studio Code Name "Orcas" Beta 1.
@H_216_19@microsoft Silverlight Tools Alpha for Visual studio Code Name "Orcas" Beta 1.
A Silverlight project. For instructions,see How to: Create a Silverlight Project.
使用BrowserhttpWebrequest来得到远程XML内容
创建一个 BrowserhttpWebrequest 实例,并将你想要调用的资源的Uniform resource Identifier (URI)传入. 你可以请求一个在同一个服务器上的文件. 例如,你可以得到示例中的RSSFeed.xml 文件(单击查看源文件按钮)然后复制到你project中的 source文件夹中.
CS
VB
注意
如果想得到不同域中的 XML document,请使用Web service. 想了解如何使用Web service,查看 Exposing Web services to Client Script in ASP.NET AJAX.
调用GetResponse 方法来得到httpWebResponse 对象,它包含了你请求资源的响应.
CS
VB
使用 httpWebResponse.GetResponseStream 方法以流的方式得到服务器对你请求的响应. CS Stream content = response.GetResponseStream(); VB Dim content = response.GetResponseStream() 在你得到response 对象后,请以Close() 方法来关闭这个资源请求. CS response.Close(); VB response.Close() 使用XMLReader来读取XML 调用Create() 方法然后给它传入一个StreamReader 类的实例,这样你就创建了一个XmlReader 对象. CS using (XmlReader reader = XmlReader.Create(new StreamReader(content))) VB Using reader As XmlReader = XmlReader.Create(New StreamReader(content)) 开始读取这个包含返回内容的stream. CS while (reader.Read()) VB While (reader.Read()) 寻找@L_801_54@为"item"的元素.它表明 RSS Feed item 就在当前节点中. CS if ((reader.IsStartElement()) && ("item" == reader.LocalName)) VB If ((reader.IsStartElement()) And ("item" = reader.LocalName)) Then 创建一个 XmlReader类型的itemReader 对象,使用XmlReader的 ReadSubTree() 方法来访问所有的"item" 元素. itemReader即能得到所有当前的 RSS item数据. CS using (XmlReader itemReader = reader.ReadSubtree()) VB Using itemReader As XmlReader = reader.ReadSubtree() 调用itemReader对象的Read() 方法在RSS Feed中来搜索"title" 和 "link" 元素 . while (itemReader.Read()) { if (itemReader.IsStartElement()) { if ("title" == itemReader.LocalName) { } else if ("link" == itemReader.LocalName) { } } } While itemReader.Read() If (itemReader.IsStartElement()) Then If ("title" = itemReader.LocalName) Then ElseIf ("link" = itemReader.LocalName) Then End If End If End While你不需要调用reader 和 itemReader的Close 方法,因为 using 申明定义的对象将在括号结束时自动disposed. 使用XMLWriter来写XML成为一个StringBuilder object 创建一个XmlWriter 并传入一个它将要写入内容并用来代表XAML内容的 StringBuilder 对象. CS StringBuilder xamlString = new StringBuilder(); using (XmlWriter writer = XmlWriter.Create(xamlString)) VB Dim xamlString As new StringBuilder() Using writer As XmlWriter = XmlWriter.Create(xamlString) 注意 你可以使用XamlWriter 来创建XAML 控件,或者你有了XmlWriter 对象,你可以改变它为 XamlWriter. 写入 XAML 元素. 在writer结束时,你可以将这些元素控件添加到XAML页中. 下面的示例添加了 Canvas 元素.它同时还添加了TextBlock 子元素到 Canvas 下. TextBlock 元素必须含有 Canvas.Top 参数来定位它在 Canvas对象的什么位置上. 你同样还要设置它显示出来的值. // Write Canvas element. writer.WriteStartElement("Canvas"); // Write child elements for Canvas. writer.WriteStartElement("TextBlock"); writer.WriteAttributeString("Canvas.Top",0); writer.WriteAttributeString("Text","title: " + itemReader.ReadElementContentAsString()); // End TextBlock element. writer.WriteEndElement(); // End Canvas element. writer.WriteEndElement(); ' Write Canvas element. writer.WriteStartElement("Canvas") ' Write child elements for Canvas. writer.WriteStartElement("TextBlock") writer.WriteAttributeString("Canvas.Top",0) writer.WriteAttributeString("Text",_ "title: " & itemReader.ReadElementContentAsString()) ' End TextBlock element. writer.WriteEndElement() ' End Canvas element. writer.WriteEndElement() 调用Flush() 方法来flush xamlString.缓冲的内容 CS writer.Flush(); VB writer.Flush() 你不需要调用writer 的 Close 方法,因为using申明定义的对象将在括号结束时自动disposed. 将内容写入 XAML 页 从String中来创建一个XAML controls. CS System.Windows.DependencyObject controls = XamlReader.Load(xamlString.ToString()); VB Dim controls As System.Windows.DependencyObject = _ XamlReader.Load(xamlString.ToString()) 添加 controls 到根 Canvas的子对象集中. CS this.Children.Add(controls as Visual); VB Me.Children.Add(controls)
以上是大佬教程为你收集整理的Silverlight读取*.XML数据全部内容,希望文章能够帮你解决Silverlight读取*.XML数据所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。