Silverlight读取*.XML数据

Silverlight读取*.XML数据,第1张

概述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; us

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

          httpWebRequest request     =         @H_419_129@new     browserhttpWebRequest(    @H_419_129@new     Uri(url));  

 

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)

总结

以上是内存溢出为你收集整理的Silverlight读取*.XML数据全部内容,希望文章能够帮你解决Silverlight读取*.XML数据所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/web/1047434.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存