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来将内容输出到XAML 中.
运行 查看 想要在基于Silverlight的应用程序中做到以上的功能,你需要准备以下步骤:
使用browserHttpWebRequest来得到远程 XML源 .
使用XmlReader来读取XML文件.
使用XmlWriter来将XML内容写入到一个StringBuilder 对象中.
输出XAML内容到页中.
要求 (available from the Silverlight download site):
Microsoft Silverlight 1.1 Alpha.
Microsoft Visual Studio Code Name "Orcas" Beta 1.
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
Dim request As New browserHttpWebRequest(New Uri(url))
注意
如果想得到不同域中的 XML document,请使用Web service. 想了解如何使用Web service,查看 Exposing Web Services to Client Script in ASP.NET AJAX.
调用GetResponse 方法来得到HttpWebResponse 对象,它包含了你请求资源的响应.
CS
HttpWebResponse response = request.GetResponse();
VB
Dim response = request.GetResponse()
使用 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()) 寻找名称为"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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。