Nasıl yapılır: .NET Framework SDK'da bir akış alınan XML verileri okunamıyor.

Makale çevirileri Makale çevirileri
Makale numarası: 301228 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Bu Sayfada

Özet

Bu makalede, XmlTextReader sınıfı bir Genişletilebilir Biçimlendirme Dili (XML) okumak için nasıl kullanılacağı gösterilmektedir. Akış, kaynaklar, bir sunucu, bir dosya veya TextReader sınıf bir bayt akışı gibi çeşitli gelebilir.

Gereksinimler

Aşağıdaki listede önerilen donanım, yazılım, ağ altyapısı ve gereken hizmet paketleri önerilmektedir:
  • Microsoft Windows 2000 Professional, Windows 2000 Server, Windows Server veya Windows NT 4.0 Server 2000 Advanced
  • Microsoft Visual Studio. NET'i
Bu makalede, aşağıdaki konularda bilgi sahibi olduğunuz varsayılmaktadır:
  • XML terminolojisi
  • Oluşturma ve XML okunuyor

XML veri nasıl gelen bir akış

  1. Visual Studio. NET'i açın.
  2. Yeni Microsoft Visual Basic (VB) ya da Microsoft Visual C# konsol uygulaması oluşturun.

    Not: aşağıdaki adımlar, uygulama oluşturma konusunda ayrıntılı açıklamasını sağlar. Ayrıca, doğrudan adım 10'da, tamamlanan kodu burada sağlanan gidebilirsiniz.
  3. Proje System.XML ve System.ıo ad boşluğuna başvuru içerdiğinden emin olun.
  4. Bu ad, kodunuzun XmlTextReader bildirimlerinde nitelemek için gerekli değildir, ALıR XML ad alanı kullanmak. Tüm diğer bildirimlerden önce ALıR Beyannameyi gibi kullanmalısınız:
    Visual Basic .NET kodu
    Imports System.Xml
    Imports System.IO
    						
    Visual C# code
    using System.Xml;
    using System.IO;
    						
  5. Oluşturmak veya XML akışı da alabilir. Bir akış, bir giriş kaynağı olan bir çıkış aygıtı veya hedef veri (Bu örnekte, XML verilerini) için soyut bir gösterimidir. Yazma ve okuma bir akış en iyi şekilde, bir bayt akışı görünür.

    Akış, aygıttan bağımsızlığı ve örneğin, kaynağı bir akış değişirse, bu nedenle program değişiklik gerektiren kullanılır. Bir akış için XmlTextReader sınıfı oluşturmak için birkaç farklı yolu vardır. Varsayılan modülü <a1>ana</a1> yordamına eklemek için aşağıdaki kod örnekleri birini seçin:
    • StringReader nesnesi kullanan kod örneği:

      StringReader nesnesi, karakter dizeleri okur ve bir dize değerine inşaat. sırasında Visual Basic .NET kodu
      Dim stream as System.IO.StringReader
      stream = new StringReader("<?xml version='1.0'?>" & _
      "<!-- This file is a book store inventory. -->" & _
      "<bookstore>" & _
      " <book genre=""autobiography"" 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>" & _
      "</bookstore>")
      						
      C# kodu
      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 nesnesi kullanan kod örneği:

      StreamReader nesnesi, karakter dosyaları okumak için kullanılır. Bu, dosya adı oluşturma sırasında okumaya okur: Visual Basic .NET kodu
      Dim stream as System.IO.StreamReader
      ' Loads the XML data in the file books.xml in a new stream.
      stream = New StreamReader ("books.xml")
      						
      C# kodu
      System.IO.StreamReader stream = new System.IO.StreamReader ("books.xml");
      						
      Books.xml dosya burada kullanıldığını unutmayın. Kendi Books.xml dosyası oluşturabilirsiniz. Bir <a0>Örnek</a0> Books.xml dosya Visual Studio .NET ve .NET ile de Sevk Framework SDK.

  6. Akış ile bir XmlTextReader sınıfı oluşturun. Genellikle, bir belge nesne modeli (DOM) yükü olmadan ham veriler olarak XML erişmek gerekirse, XmlTextReader kullanılır; bu nedenle, bu XmlTextReader XML okumak için daha hızlı bir düzenek sağlar. XML konumunu belirtmek için farklı Kurucular XmlTextReader sahip veri. Aşağıdaki kod, bir XmlTextReader yükler:
    Visual Basic .NET kodu
    Dim reader As XmlTextReader = New XmlTextReader (stream)
    						
    C# Code
    XmlTextReader reader = null;	
    reader = new XmlTextReader (stream);
    						
  7. XML ile okuyun. Yüklenen XmlTextReader XML verileri arasında taşımak için sıralı okuma gerçekleştirir ve bir sonraki kayıttaki almak için Read yöntemini kullanır. Daha fazla kayıt varsa, false döndürür.
    Visual Basic .NET kodu
    Do While (reader.Read())
        ' Do some work here on the data.
        Console.WriteLine(reader.Name)
    Loop
    
    ' Reading of the XML file has finished.
    Console.ReadLine() 'Pause
    						
    C# Code
    while (reader.Read()) 
    {
        // Do some work here on the data.
        ...
    }
    
    while (reader.Read()) 
    {
        // Do some work here on the data.
    	Console.WriteLine(reader.Name);
    }
    Console.ReadLine();
    						
  8. Düğümlerin inceleyin. XML verilerini işlemek için <a0></a0>, her kayıt NodeType özelliğinden belirlenen bir düğüm türü var. Ad ve değer özelliklerini, düğüm adı (öğe ve öznitelik adları) ve geçerli düğümü (veya kaydın) düğüm değerini (düğüm metin) verir. NodeType numaralandırma düğüm türü belirler. Aşağıdaki örnek, öğeler ve belge türü adını görüntüler. Not Bu örnekte, öğenin özniteliklerini yoksayar.
    Visual Basic .NET kodu
    Do While (reader.Read())
    Select Case reader.NodeType
    Case XmlNodeType.Element 'Display beginning of element.
    Console.Write("<" + reader.Name)
    Console.WriteLine(">")
    Case XmlNodeType.Text 'Display the text in each element.
    Console.WriteLine(reader.Value)
    Case XmlNodeType.EndElement 'Display end of element.
    Console.Write("</" + reader.Name)
    Console.WriteLine(">")
    End Select
    Loop
    						
    C# Code
    while (reader.Read()) 
    {
        switch (reader.NodeType) 
        {
            case XmlNodeType.Element: // The node is an Element.
                Console.Write("<" + reader.Name);
       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;
        }
    }
    						
  9. Öznitelikleri inceleyin. Öğe düğüm türü, bunlarla ilişkili öznitelik düğümlerin listesini içerebilir. Her öğenin özniteliği aracılığıyla MovetoNextAttribute yöntemi sırayla taşır. HasAttributes özelliği, düğümün tüm öznitelikleri olup olmadığını sınamak için kullanın. AttributeCount özelliği, geçerli düğüm için öznitelik sayısını döndürür.
    Visual Basic .NET kodu
    Do While (reader.Read())
    Select Case reader.NodeType
    Case XmlNodeType.Element 'Display beginning of element.
    Console.Write("<" + reader.Name)
             If reader.HasAttributes Then 'If attributes exist
             	While reader.MoveToNextAttribute() 
    					'Display attribute name and value.
    Console.Write(" {0}='{1}'", reader.Name, reader.Value)
    End While
    End If
    Console.WriteLine(">")
    Case XmlNodeType.Text 'Display the text in each element.
    Console.WriteLine(reader.Value)
    Case XmlNodeType.EndElement 'Display end of element.
    Console.Write("</" + reader.Name)
    Console.WriteLine(">")
    End Select
    Loop
    						
    C# Code
    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;
        }
    }
    						

  10. Tamamlanan kod, burada kolaylık olması için sağlanmıştır.
    Görsel Basic.Net kodu
    Imports System.Xml
    Imports System.IO
    Module Module1
    
        Sub Main()
            Dim stream As System.IO.StreamReader
            ' Loads the XML data in the file books.xml in a new stream.
            stream = New StreamReader("books.xml")
            Dim reader As XmlTextReader = New XmlTextReader(stream)
            Do While (reader.Read())
                Select Case reader.NodeType
                    Case XmlNodeType.Element 'Display beginning of element.
                        Console.Write("<" + reader.Name)
                        If reader.HasAttributes Then 'If attributes exist
                            While reader.MoveToNextAttribute()
                                'Display attribute name and value.
                                Console.Write(" {0}='{1}'", reader.Name, reader.Value)
                            End While
                        End If
                        Console.WriteLine(">")
                    Case XmlNodeType.Text 'Display the text in each element.
                        Console.WriteLine(reader.Value)
                    Case XmlNodeType.EndElement 'Display end of element.
                        Console.Write("</" + reader.Name)
                        Console.WriteLine(">")
                End Select
            Loop
        End Sub
    
    End Module
    						

    C# kodu
    using System;
    using System.Xml;
    using System.IO;
    namespace ReadXMLFromStream
    {
    	/// <summary>
    	/// Summary description for Class1.
    	/// </summary>
    	class Class1
    	{
    		static void Main(string[] args)
    		{
    
    			System.IO.StreamReader stream = new System.IO.StreamReader ("books.xml");
    			XmlTextReader reader = null;	
    			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;
    				}
    			}
    
    		}
    	}
    }
    
    						
  11. Oluşturma ve projenizin Çalıştır.

Referanslar

Daha fazla bilgi için bkz: "Microsoft .NET XML: .NET Framework XML sınıfları ve C# indirim basit, ölçeklenebilir bir veri denetleme" MSDN Magazine'in makalesinden aşağıdaki Microsoft Web sitesinden:
http://msdn.microsoft.com/msdnmag/issues/01/01/xml/default.aspx
XmlReader, StreamReader ve StringReader sınıfları hakkında daha fazla bilgi için bkz: Microsoft .NET Framework sınıf kitaplığı belgeler.

XML verilerini okumaya XmlReader ' ni kullanma hakkında daha fazla bilgi için bkz: Microsoft .NET Framework Developer's belgelerine Kılavuzu.

Özellikler

Makale numarası: 301228 - Last Review: 15 Temmuz 2004 Perşembe - Gözden geçirme: 3.4
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft .NET Framework 1.1
  • Microsoft .NET Framework Class Libraries 1.1
Anahtar Kelimeler: 
kbmt kbhowtomaster KB301228 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:301228

Geri Bildirim Ver

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com