DotNet编程-星光伴我行

滴滴真谛 水滴石穿

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

1、读取并解析XML文档示例。

 

           //StringReader 对象从字符串中读取字符,在构造过程中取得一个字符串值。
            StringReader stream;
            stream 
= new StringReader("<?xml version='1.0'?>" +
                
"<!-- This file represents a fragment of a book store inventory database. -->" +
                
"<bookstore>" +
                
" <book genre=\"autobiography\" publicationdate=\"1981\" ISBN=\"1-861003-11-0\">" +
                
"   <title>The Autobiography of Benjamin Franklin</title>" +
                
"   <author>" +
                
"       <first-name>Benjamin</first-name>" +
                
"       <last-name>Franklin</last-name>" +
                
"   </author>" +
                
"   <price>8.99</price>" +
                
" </book>" +
                
" <book genre=\"novel\" publicationdate=\"1967\" ISBN=\"0-201-63361-2\">" +
                
"   <title>The Confidence Man</title>" +
                
"   <author>" +
                
"       <first-name>Herman</first-name>" +
                
"       <last-name>Melville</last-name>" +
                
"   </author>" +
                
"   <price>11.99</price>" +
                
" </book>" +
                
"  <book genre=\"philosophy\" publicationdate=\"1991\" ISBN=\"1-861001-57-6\">" +
                
"   <title>The Gorgias</title>" +
                
"   <author>" +
                
"       <name>Plato</name>" +
                
"   </author>" +
                
"   <price>9.99</price>" +
                
" </book>" +
                
"</bookstore>");

            
//StreamReader 对象用于从文件读取字符。在构造过程中,该对象读入要读取的文件的名称
            
//System.IO.StreamReader stream = new System.IO.StreamReader("books.xml");
            
//使用指定的流创建一个新的 XmlReader 实例。 
            using (XmlReader reader = XmlReader.Create(stream))
            {
                
//XmlTextReader reader = null;
                
//使用数据流构造一个 XmlTextReader 类。通常,如果需要在不使用文档对象模型 (DOM) 的情况下将 XML 作为要访问的原始数据,
                
//则可以使用 XmlTextReader;因此,XmlTextReader 提供了一种更快读取 XML 的机制。XmlTextReader 使用不同的构造函数来
               指定 XML 数据的位置。以下代码从某个流加载 XmlTextReader:
                
//reader = new XmlTextReader(stream);
                while (reader.Read())
                {
                    
switch (reader.NodeType)
                    {
                        
case XmlNodeType.Element:// The node is an Element.
                            Console.Write("<" + reader.Name);

                            
while (reader.MoveToNextAttribute()) // Read attributes.
                                Console.Write(" " + reader.Name + "='" + reader.Value + "'");
                            Console.Write(
">");
                            Console.WriteLine(
">");
                            
break;
                        
case XmlNodeType.Text://Display the text in each element.
                            Console.WriteLine(reader.Value);
                            
break;
                        
case XmlNodeType.EndElement://Display end of element.
                            Console.Write("</" + reader.Name);
                            Console.WriteLine(
">");
                            
break;
                    }
                }

            }

 

2、获取服务器端的文件

 

         /// <summary>
        
/// 获取当前SILVERLIGHT程序存放网络URL的前缀
        
/// </summary>
        
/// <returns>URL前缀</returns>
        public static string GetURL()
        {
            ScriptObject location 
= (HtmlPage.Window.GetProperty("location"as ScriptObject);
            
object r = location.GetProperty("href");
            
string URL = r.ToString().Substring(0, r.ToString().LastIndexOf('/')); //截取到当前SILVERLIGHT程序存放网络URL的前缀
            return URL;
        }

 

 3、完整的代码

 

        private void button1_Click(object sender, RoutedEventArgs e)
        {
           
            Uri uri 
= new Uri(GetURL() + "/versionManage.xml", UriKind.Absolute);
            WebClient Appclient 
= new WebClient();
            Appclient.OpenReadAsync(uri);
            Appclient.OpenReadCompleted 
+= new OpenReadCompletedEventHandler(Appclient_OpenReadCompleted);
        }

        
/// <summary>
        
/// 获取当前SILVERLIGHT程序存放网络URL的前缀
        
/// </summary>
        
/// <returns>URL前缀</returns>
        public static string GetURL()
        {
            ScriptObject location 
= (HtmlPage.Window.GetProperty("location"as ScriptObject);
            
object r = location.GetProperty("href");
            
string URL = r.ToString().Substring(0, r.ToString().LastIndexOf('/')); //截取到当前SILVERLIGHT程序存放网络URL的前缀
            return URL;
        }

        void Appclient_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
        {
            Stream stream 
= e.Result;
            
using (XmlReader reader = XmlReader.Create(stream))
            {
                       
                
while (reader.Read())
                {
                    
switch (reader.NodeType)
                    {
                        
case XmlNodeType.Element:// The node is an Element.
                            Console.Write("<" + reader.Name);
                            
while (reader.MoveToNextAttribute()) // Read attributes.
                                Console.Write(" " + reader.Name + "='" + reader.Value + "'");
                            Console.Write(
">");
                            Console.WriteLine(
">");
                            
break;
                        
case XmlNodeType.Text://Display the text in each element.
                            Console.WriteLine(reader.Value);
                            
break;
                        
case XmlNodeType.EndElement://Display end of element.
                            Console.Write("</" + reader.Name);
                            Console.WriteLine(
">");
                            
break;
                    }
                }

            }

        }

 

posted on 2011-04-29 13:56  DotNet编程  阅读(1066)  评论(0编辑  收藏  举报