XmlReader Sınıf

Tanım

XML verilerine hızlı, boş, yalnızca ileriye doğru erişim sağlayan bir okuyucudur.

public ref class XmlReader abstract : IDisposable
public ref class XmlReader abstract
public abstract class XmlReader : IDisposable
public abstract class XmlReader
type XmlReader = class
    interface IDisposable
type XmlReader = class
Public MustInherit Class XmlReader
Implements IDisposable
Public MustInherit Class XmlReader
Devralma
XmlReader
Türetilmiş
Uygulamalar

Örnekler

Aşağıdaki örnek kod, XML ayrıştırmak için zaman uyumsuz API'nin nasıl kullanılacağını gösterir.

async Task TestReader(System.IO.Stream stream)
{
    XmlReaderSettings settings = new XmlReaderSettings();
    settings.Async = true;

    using (XmlReader reader = XmlReader.Create(stream, settings))
    {
        while (await reader.ReadAsync())
        {
            switch (reader.NodeType)
            {
                case XmlNodeType.Element:
                    Console.WriteLine("Start Element {0}", reader.Name);
                    break;
                case XmlNodeType.Text:
                    Console.WriteLine("Text Node: {0}",
                             await reader.GetValueAsync());
                    break;
                case XmlNodeType.EndElement:
                    Console.WriteLine("End Element {0}", reader.Name);
                    break;
                default:
                    Console.WriteLine("Other node {0} with value {1}",
                                    reader.NodeType, reader.Value);
                    break;
            }
        }
    }
}
Public Async Function TestReader(stream As System.IO.Stream) As Task
    Dim settings As New XmlReaderSettings()
    settings.Async = True

    Using reader As XmlReader = XmlReader.Create(stream, settings)
        While (Await reader.ReadAsync())
            Select Case (reader.NodeType)
                Case XmlNodeType.Element
                    Console.WriteLine("Start Element {0}", reader.Name)
                Case XmlNodeType.Text
                    Console.WriteLine("Text Node: {0}",
                             Await reader.GetValueAsync())
                Case XmlNodeType.EndElement
                    Console.WriteLine("End Element {0}", reader.Name)
                Case Else
                    Console.WriteLine("Other node {0} with value {1}",
                                    reader.NodeType, reader.Value)
            End Select
        End While
    End Using
End Function

Açıklamalar

XmlReader belge veya akıştaki XML verilerine ileri-tek yönlü, salt okunur erişim sağlar. Bu sınıf, W3C Genişletilebilir Biçimlendirme Dili (XML) 1.0 (dördüncü sürüm) ve XML 1.0 'daki Ad Alanları (üçüncü sürüm) önerilerine uygundur.

XmlReader yöntemleri, XML verileri arasında gezinmenizi ve bir düğümün içeriğini okumanızı sağlar. sınıfının özellikleri, okuyucunun konumlandırıldığı geçerli düğümün değerini yansıtır. ReadState Özellik değeri, XML okuyucusunun geçerli durumunu gösterir. Örneğin, özellik ReadState.Initial yöntemi tarafından XmlReader.Read olarak ve ReadState.Closed yöntemi tarafından XmlReader.Close olarak ayarlanır. XmlReader ayrıca bir DTD veya şemaya göre veri uyumluluğu denetimleri ve doğrulama sağlar.

XmlReader verileri almak için bir çekme modeli kullanır. Bu model:

  • Doğal ve kolay anlaşılır bir şekilde yukarıdan aşağıya doğru prosedürel iyileştirmeyle durum yönetimini basitleştirir.
  • Birden çok giriş akışını ve katmanlamasını destekler.
  • İstemcinin ayrıştırıcıya dizenin doğrudan yazıldığı bir arabellek vermesini sağlar ve bu nedenle ek bir dize kopyası gerekliliğini önler.
  • Seçmeli işlemeyi destekler. İstemci, öğeleri atlayabilir ve uygulamayı ilgilendiren öğeleri işleyebilir. Ayrıca, XML akışının nasıl işlendiğini (örneğin, normalleştirme) yönetmek için özellikleri önceden ayarlayabilirsiniz.

XML okuyucu oluşturma

Create yöntemini kullanarak bir XmlReader örneği oluşturun.

.NET XmlReader sınıfının somut uygulamalarını, XmlTextReader, XmlNodeReader ve XmlValidatingReader sınıfları gibi, sağlasa da, özel sınıfları yalnızca şu senaryolarda kullanmanızı öneririz:

  • Bir nesneden XmlNode XML DOM alt ağacını okumak istediğinizde sınıfını XmlNodeReader kullanın. (Ancak, bu sınıf DTD veya şema doğrulamayı desteklemez.)
  • İstek üzerine varlıkları genişletmeniz gerekiyorsa, metin içeriğinizin normalleştirilmesini veya varsayılan özniteliklerin döndürülmesini istemiyorsanız sınıfını XmlTextReader kullanın.

XML okuyucuda etkinleştirmek istediğiniz özellik kümesini belirtmek için yöntemine System.Xml.XmlReaderSettings bir Create nesne geçirin. Aynı işleve sahip birden çok okuyucu oluşturmak için tek System.Xml.XmlReaderSettings bir nesne kullanabilir veya nesneyi değiştirerek farklı özelliklere sahip yeni bir okuyucu oluşturabilirsiniz System.Xml.XmlReaderSettings . Ayrıca mevcut bir okuyucuya kolayca özellik ekleyebilirsiniz.

Nesne System.Xml.XmlReaderSettings kullanmıyorsanız, varsayılan ayarlar kullanılır. Create Ayrıntılar için başvuru sayfasına bakın.

XmlReader XML ayrıştırma hatası durumunda XmlException atar. İstisna fırlatıldıktan sonra okuyucunun durumu öngörülemez. Örneğin, bildirilen düğüm türü geçerli düğümün gerçek düğüm türünden farklı olabilir. Okuyucunun ReadState hata durumunda olup olmadığını denetlemek için özelliğini kullanın.

XML verilerini doğrulama

XML belgesinin yapısını ve öğe ilişkilerini, veri türlerini ve içerik kısıtlamalarını tanımlamak için, belge türü tanımı (DTD) veya XML Şema tanım dili (XSD) şeması kullanırsınız. Xml belgesi W3C XML 1.0 Önerisi tarafından tanımlanan tüm sözdizimsel gereksinimleri karşılıyorsa iyi biçimlendirilmiş olarak kabul edilir. İyi biçimlendirilmişse ve DTD veya şeması tarafından tanımlanan kısıtlamalara uygunsa geçerli kabul edilir. (Bkz. W3C XML Şema Bölüm 1: Yapılar ve W3C XML Şema Bölüm 2: Veri türleri önerileri.) Bu nedenle, tüm geçerli XML belgeleri iyi biçimlendirilmiş olsa da, tüm iyi biçimlendirilmiş XML belgeleri geçerli değildir.

Verileri bir DTD, satır içi XSD Şeması veya bir nesnede (önbellek) depolanan bir XmlSchemaSet XSD Şemasına göre doğrulayabilirsiniz; bu senaryolar başvuru sayfasında açıklanmıştır Create . XmlReader XML-Data Azaltılmış (XDR) şema doğrulamayı desteklemez.

XmlReaderSettings sınıfında, XmlReader örneğinin hangi doğrulama türünü (varsa) desteklediğini belirtmek için aşağıdaki ayarları kullanırsınız.

XmlReaderSettings adlı üyeyi kullanın Belirtmek için
DtdProcessing özellik DTD işlemeye izin verilip verilmeyeceği. Varsayılan değer, DTD işlemeye izin vermemektir.
ValidationType özellik Okuyucunun verileri doğrulaması gerekip gerekmediği ve gerçekleştirilecek doğrulama türü (DTD veya şema). Varsayılan olarak veri doğrulaması yoktur.
ValidationEventHandler etkinlik Doğrulama olayları hakkında bilgi almak için bir olay işleyicisi. Bir olay işleyici sağlanmazsa, ilk doğrulama hatasında bir XmlException atılır.
ValidationFlags özellik Enumerasyon üyeleri aracılığıyla XmlSchemaValidationFlags ek doğrulama seçenekleri:

- AllowXmlAttributes-- Şemada tanımlanmamış olsalar bile örnek belgelerde XML özniteliklerine (xml:*) izin verin. Öznitelikler, veri türlerine göre doğrulanır. Belirli senaryolar için kullanılacak ayar hakkında bilgi almak üzere XmlSchemaValidationFlags başvuru sayfasına bakın. (Varsayılan olarak devre dışıdır.)
- ProcessIdentityConstraints--Doğrulama sırasında karşılaşılan işlem kimliği kısıtlamaları (xs:ID, xs:IDREFxs:key, , xs:keyref, xs:unique) . (Varsayılan olarak etkindir.)
- ProcessSchemaLocation -- xsi:schemaLocation veya xsi:noNamespaceSchemaLocation özniteliği tarafından belirtilen işlemleri şemaları işleyin. (Varsayılan olarak etkindir.)
- ProcessInlineSchema-- Doğrulama sırasında satır içi XML Şemalarını işleyin. (Varsayılan olarak devre dışıdır.)
- ReportValidationWarnings--Doğrulama uyarısı oluşursa olayları bildirin. Genellikle belirli bir öğe veya özniteliğin doğrulanması için DTD veya XML Şeması olmadığında bir uyarı verilir. ValidationEventHandler, bildirim için kullanılır. (Varsayılan olarak devre dışıdır.)
Schemas XmlSchemaSet Doğrulama için kullanılacak.
XmlResolver özellik XmlResolver Dış kaynakları çözümlemek ve bunlara erişmek için. Bu, DTD ve şemalar gibi dış varlıkları ve XML Şemasında bulunan herhangi bir xs:include veya xs:import öğeyi içerebilir. Eğer bir XmlResolver belirtmezseniz, XmlReader kullanıcı kimlik bilgileri olmadan varsayılan bir XmlUrlResolver kullanır.

Veri uyumluluğu

yöntemi tarafından Create oluşturulan XML okuyucuları varsayılan olarak aşağıdaki uyumluluk gereksinimlerini karşılar:

  • Yeni satırlar ve öznitelik değeri W3C XML 1.0 Önerisine göre normalleştirilir.

  • Tüm varlıklar otomatik olarak genişletilir.

  • Belge türü tanımında bildirilen varsayılan öznitelikler, okuyucu doğrulamadığında bile her zaman eklenir.

  • Doğru XML ad alanı URI'sine eşlenmiş XML ön eki bildirimine izin verilir.

  • Tek bir NotationType öznitelik bildirimindeki ve tek bir NmTokens öznitelik bildirimindeki Enumeration gösterim adları farklıdır.

Etkinleştirmek istediğiniz uyumluluk denetimlerinin türünü belirtmek için şu XmlReaderSettings özellikleri kullanın:

Bu XmlReaderSettings özelliği kullan İçin Varsayılan
CheckCharacters özellik Aşağıdakiler için denetimleri etkinleştirin veya devre dışı bırakın:

- Karakterler, W3C XML 1.0 Önerisi'nin 2,2 Karakter bölümünde tanımlanan yasal XML karakterleri aralığındadır.
- Tüm XML adları, W3C XML 1.0 Önerisi'nin 2.3 Ortak İlgili Yapılar bölümünde tanımlandığı gibi geçerlidir.

Bu özellik (varsayılan) olarak ayarlandığında true , XmlException XML dosyası geçersiz karakterler veya geçersiz XML adları içeriyorsa (örneğin, öğe adı bir sayı ile başlar) bir özel durum oluşturulur.
Karakter ve ad denetimi etkinleştirilir.

CheckCharacters ayarını false olarak ayarlamak, karakter varlığı başvuruları için karakter denetimini kapatır. Okuyucu metin verilerini işliyorsa, xml adlarının bu ayardan bağımsız olarak her zaman geçerli olup olmadığını denetler. Not: XML 1.0 önerisi, bir DTD mevcut olduğunda belge düzeyinde uyumluluk gerektirir. Bu nedenle, okuyucu ConformanceLevel.Fragment desteği verecek şekilde yapılandırılmışsa, ancak XML verileri bir belge türü tanımı (DTD) içeriyorsa, bir XmlException oluşturulur.
ConformanceLevel özellik Zorunlu kılınacak uyumluluk düzeyini seçin:

- Document. İyi biçimlendirilmiş bir XML 1.0 belgesinin kurallarına uygundur.
- Fragment. Dış ayrıştırılmış varlık olarak kullanılabilecek iyi biçimlendirilmiş bir belge parçasının kurallarına uyar.
- Auto. Okuyucunun karar verdiği düzeye uygundur.

Veriler uyumlu değilse bir XmlException özel durum oluşturulur.
Document

Geçerli düğüm, XML okuyucunun şu anda konumlandırıldığı XML düğümüdür. Tüm XmlReader yöntemler bu düğümle ilgili işlemler gerçekleştirir ve tüm XmlReader özellikler geçerli düğümün değerini yansıtır.

Aşağıdaki yöntemler, düğümler arasında gezinmeyi ve verileri ayrıştırmayı kolaylaştırır.

Bu XmlReader yöntemi kullanın İçin
Read İlk düğümü okuyun ve akışta sırayla her seferinde bir düğüm ilerleyin. Bu tür çağrılar genellikle bir while döngü içinde gerçekleştirilir.

Geçerli düğümün türünü (örneğin, öznitelik, açıklama, öğe vb.) almak için NodeType özelliğini kullanın.
Skip Geçerli düğümün alt öğelerini atlayın ve sonraki düğüme geçin.
MoveToContent ve MoveToContentAsync İçerik olmayan düğümleri atlayın ve sonraki içerik düğümüne veya dosyanın sonuna geçin.

İçerik olmayan düğümler ProcessingInstruction, DocumentType, Comment, Whitespace ve SignificantWhitespace şeklindedir.

İçerik düğümleri, boşluk olmayan metin, CDATA, EntityReference ve EndEntity içerir.
ReadSubtree Bir öğeyi ve tüm alt öğelerini okuyun ve XmlReader olarak ayarlanmış yeni bir ReadState.Initial örneği geri döndürün.

Bu yöntem, XML öğeleri çevresinde sınırlar oluşturmak için kullanışlıdır; örneğin, verileri işlenmek üzere başka bir bileşene geçirmek ve bileşenin erişebileceği veri miktarını sınırlamak istiyorsanız.

Bir metin akışında tek seferde bir düğümde gezinme ve her düğümün türünü görüntüleme örneği için referans sayfasına bakın.

Aşağıdaki bölümlerde öğeler, öznitelikler ve yazılan veriler gibi belirli veri türlerini nasıl okuyabileceğiniz açıklanmaktadır.

XML öğelerini okuma

Aşağıdaki tabloda, sınıfın öğeleri işlemek için sağladığı yöntemler ve özellikler XmlReader listelenmiştir. XmlReader öğesinde konumlandırıldıktan sonra, gibi Namedüğüm özellikleri öğe değerlerini yansıtır. Aşağıda açıklanan üyelere ek olarak, sınıfın genel yöntem ve özelliklerinden XmlReader herhangi biri de öğeleri işlemek için kullanılabilir. Örneğin, bir öğenin içeriğini okumak için yöntemini kullanabilirsiniz ReadInnerXml .

Note

Başlangıç etiketleri, bitiş etiketleri ve boş öğe etiketleri tanımları için W3C XML 1.0 Önerisi'nin 3.1 . bölümüne bakın.

XmlReader adlı üyeyi kullanın İçin
IsStartElement yöntemi Geçerli düğümün başlangıç etiketi mi yoksa boş öğe etiketi mi olduğunu denetleyin.
ReadStartElement yöntemi Geçerli düğümün bir öğe olduğunu kontrol edin ve okuyucuyu sonraki düğüme ilerletin (önce IsStartElement ardından Read çağrılır).
ReadEndElement yöntemi Geçerli düğümün bir bitiş etiketi olup olmadığını denetleyin ve okuyucuyu sonraki düğüme ilerletin.
ReadElementString yöntemi Yalnızca metin öğesini okuyun.
ReadToDescendant yöntemi XML okuyucusunu, verilen isme sahip bir sonraki alt (çocuk) öğeye ilerlet.
ReadToNextSibling yöntemi XML okuyucuyu belirtilen ada sahip bir sonraki eşdüzey öğeye ilerlet.
IsEmptyElement özellik Geçerli öğenin bir bitiş öğesi etiketi olup olmadığını denetleyin. Örneğin:

- <item num="123"/> (IsEmptyElementtrue vardır)
- <item num="123"> </item> (IsEmptyElement öğesi false olmasına rağmen içerik boş.)

Öğelerin metin içeriğini okuma örneği için yöntemine ReadString bakın. Aşağıdaki örnek bir while döngü kullanarak öğeleri işler.

while (reader.Read()) {
  if (reader.IsStartElement()) {
    if (reader.IsEmptyElement)
                {
                    Console.WriteLine("<{0}/>", reader.Name);
                }
                else {
      Console.Write("<{0}> ", reader.Name);
      reader.Read(); // Read the start tag.
      if (reader.IsStartElement())  // Handle nested elements.
        Console.Write("\r\n<{0}>", reader.Name);
      Console.WriteLine(reader.ReadString());  //Read the text content of the element.
    }
  }
}
While reader.Read()
  If reader.IsStartElement() Then
    If reader.IsEmptyElement Then
      Console.WriteLine("<{0}/>", reader.Name)
    Else
      Console.Write("<{0}> ", reader.Name)
      reader.Read() ' Read the start tag.
      If reader.IsStartElement() Then ' Handle nested elements.
        Console.Write(vbCr + vbLf + "<{0}>", reader.Name)
      End If
      Console.WriteLine(reader.ReadString()) 'Read the text content of the element.
    End If
  End If
End While

XML özniteliklerini okuma

XML öznitelikleri en yaygın olarak öğelerde bulunur, ancak XML bildirimi ve belge türü düğümlerinde de bunlara izin verilir.

Bir öğe düğümünde konumlandırıldığında yöntemi, MoveToAttribute öğesinin öznitelik listesinden geçmenizi sağlar. çağrıldıktan sonra MoveToAttribute , Namegibi NamespaceURIdüğüm özelliklerinin ve Prefix özniteliğin ait olduğu öğenin özelliklerini değil, bu özniteliğin özelliklerini yansıttığını unutmayın.

sınıfı, XmlReader öğelerdeki öznitelikleri okumak ve işlemek için bu yöntemleri ve özellikleri sağlar.

XmlReader adlı üyeyi kullanın İçin
HasAttributes özellik Geçerli düğümün öznitelikleri olup olmadığını kontrol edin.
AttributeCount özellik Geçerli öğedeki öznitelik sayısını alın.
MoveToFirstAttribute yöntemi Bir öğedeki ilk özniteliğe gitme.
MoveToNextAttribute yöntemi Bir öğede sonraki özniteliğe gitme.
MoveToAttribute yöntemi Belirtilen bir özniteliğe gitme.
GetAttribute yöntem veya Item[Int32] özellik Belirtilen özniteliğin değerini alın.
IsDefault özellik Geçerli düğümün DTD veya şemada tanımlanan varsayılan değerden oluşturulmuş bir öznitelik olup olmadığını denetleyin.
MoveToElement yöntemi Geçerli özniteliğin sahibi olan öğeye gitme. Öznitelikleri arasında gezindikten sonra bir öğeye dönmek için bu yöntemi kullanın.
ReadAttributeValue yöntemi Öznitelik değerini bir veya daha fazla Text, EntityReferenceveya EndEntity düğümde ayrıştırın.

Öznitelikleri işlemek için genel XmlReader yöntem ve özelliklerden herhangi biri de kullanılabilir. Örneğin, XmlReader bir öznitelik üzerine konumlandırıldıktan sonra, Name ve Value özellikleri bu özniteliğin değerlerini yansıtır. Özniteliğin değerini almak için içerik Read yöntemlerinden herhangi birini de kullanabilirsiniz.

Bu örnek, bir öğedeki AttributeCount tüm özniteliklerde gezinmek için özelliğini kullanır.

// Display all attributes.
if (reader.HasAttributes) {
  Console.WriteLine("Attributes of <" + reader.Name + ">");
  for (int i = 0; i < reader.AttributeCount; i++) {
    Console.WriteLine("  {0}", reader[i]);
  }
  // Move the reader back to the element node.
  reader.MoveToElement();
}
' Display all attributes.
If reader.HasAttributes Then
  Console.WriteLine("Attributes of <" + reader.Name + ">")
  Dim i As Integer
  For i = 0 To (reader.AttributeCount - 1)
    Console.WriteLine("  {0}", reader(i))
  Next i
  ' Move the reader back to the element node.
  reader.MoveToElement() 
End If

Bu örnek, öznitelikler arasında gezinmek için döngüdeki MoveToNextAttribute yöntemini kullanırwhile.

if (reader.HasAttributes) {
  Console.WriteLine("Attributes of <" + reader.Name + ">");
  while (reader.MoveToNextAttribute()) {
    Console.WriteLine(" {0}={1}", reader.Name, reader.Value);
  }
  // Move the reader back to the element node.
  reader.MoveToElement();
}
If reader.HasAttributes Then
  Console.WriteLine("Attributes of <" + reader.Name + ">")
  While reader.MoveToNextAttribute()
    Console.WriteLine(" {0}={1}", reader.Name, reader.Value)
  End While
  ' Move the reader back to the element node.
  reader.MoveToElement()
End If

XML bildirim düğümlerindeki öznitelikleri okuma

XML okuyucu bir XML bildirim düğümünde konumlandırıldığında, Value özelliği sürüm, tek başına ve kodlama bilgilerini tek bir dize olarak döndürür. XmlReader yöntemi, Create sınıfı ve XmlTextReader sınıfı tarafından oluşturulan nesneler, sürüm, tek başına çalışma ve kodlama niteliklerini öznitelik olarak sunar.

Belge türü düğümlerindeki öznitelikleri okuma

XML okuyucu bir belge türü düğümünde konumlandırıldığında, GetAttribute yöntemi ve Item[Int32] özelliği, SYSTEM ve PUBLIC değişmez değerleri için değerleri döndürmek amacıyla kullanılabilir. Örneğin, çağrısı reader.GetAttribute("PUBLIC") PUBLIC değerini döndürür.

Yönerge düğümlerini işlemeyle ilgili öznitelikleri okuma

XmlReader bir işleme yönerge düğümünde konumlandırıldığında, Value özelliği metin içeriğinin tamamını döndürür. İşleme yönerge düğümündeki öğeler öznitelik olarak değerlendirilmez. GetAttribute veya MoveToAttribute yöntemiyle okunamaz.

XML içeriğini okuma

XmlReader sınıfı, xml dosyasından içerik okuyan ve içeriği dize değerleri olarak döndüren aşağıdaki üyeleri içerir. (CLR türlerini döndürmek için bkz . CLR türlerine dönüştürme.)

XmlReader adlı üyeyi kullanın İçin
Value özellik Geçerli düğümün metin içeriğini alın. Döndürülen değer düğüm türüne bağlıdır; Value ayrıntılar için başvuru sayfasına bakın.
ReadString yöntemi Bir öğenin veya metin düğümünün içeriğini dize olarak alın. Bu yöntem, yönergeleri ve açıklamaları işlemeyi durdurur.

Bu yöntemin belirli düğüm türlerini nasıl işlediği hakkında ayrıntılı bilgi için başvuru sayfasına bakın ReadString .
ReadInnerXml ve ReadInnerXmlAsync yöntemleri Mevcut düğümün, işaretleme dahil, başlangıç ve bitiş etiketleri hariç olmak üzere tüm içeriğini alın. Örneğin, şu şekilde:

<node>this<child id="123"/></node>

ReadInnerXml Döndürür:

this<child id="123"/>
ReadOuterXml ve ReadOuterXmlAsync yöntemleri İşaretlemesi ve başlangıç/bitiş etiketleri dahil olmak üzere geçerli düğümün ve alt öğelerinin tüm içeriğini alın. Örneğin, şu şekilde:

<node>this<child id="123"/></node>

ReadOuterXml Döndürür:

<node>this<child id="123"/></node>

CLR türlerine dönüştürme

XML verilerini okumak ve değerleri dizeler yerine ortak dil çalışma zamanı (CLR) türleri olarak döndürmek için sınıfın üyelerini XmlReader (aşağıdaki tabloda listelenmiştir) kullanabilirsiniz. Bu üyeler, dize değerlerini el ile ayrıştırmak veya dönüştürmek zorunda kalmadan, gösterimde kodlama göreviniz için en uygun değerleri almanıza olanak tanır.

  • ReadElementContentAs yöntemleri yalnızca öğe düğümü türlerinde çağrılabilir. Bu yöntemler, alt öğeler veya karma içerik içeren öğelerde kullanılamaz. Çağrıldığında XmlReader , nesne başlangıç etiketini okur, öğe içeriğini okur ve ardından son öğe etiketinin dışına taşınır. İşleme yönergeleri ve açıklamalar yoksayılır ve öğeler genişletilir.

  • ReadContentAs yöntemleri, geçerli okuyucu konumunda metin içeriğini okur ve XML verilerinde ilişkili şema veya veri türü bilgisi yoksa, metin içeriğini istenen dönüş tipine çevirir. Metin, boşluk, önemli boşluk ve CDATA bölümleri birleştirilir. Açıklamalar ve işleme yönergeleri atlanır ve varlık başvuruları otomatik olarak çözümlenir.

sınıfı, XmlReaderW3C XML Şema Bölüm 2: Veri türleri önerisi tarafından tanımlanan kuralları kullanır.

Bu XmlReader yöntemi kullanın Bu CLR türünü döndürmek için
ReadContentAsBoolean ve ReadElementContentAsBoolean Boolean
ReadContentAsDateTime ve ReadElementContentAsDateTime DateTime
ReadContentAsDouble ve ReadElementContentAsDouble Double
ReadContentAsLong ve ReadElementContentAsLong Int64
ReadContentAsInt ve ReadElementContentAsInt Int32
ReadContentAsString ve ReadElementContentAsString String
ReadContentAs ve ReadElementContentAs returnType parametresiyle belirttiğiniz tür
ReadContentAsObject ve ReadElementContentAsObject XmlReader.ValueType özelliği tarafından belirtilen en uygun tür. Eşleştirme bilgileri için bkz. System.Xml Sınıflarında Tür Desteği

Bir öğe biçimi nedeniyle kolayca CLR türüne dönüştürülemiyorsa, başarılı bir dönüştürme sağlamak için şema eşlemesi kullanabilirsiniz. Aşağıdaki örnek, hire-date öğesini xs:date türüne dönüştürmek için bir .xsd dosyası kullanır ve ardından öğeyi ReadElementContentAsDateTime nesnesi olarak döndürmek için DateTime yöntemini kullanır.

Giriş (hireDate.xml):

<employee xmlns="urn:empl-hire">
    <ID>12365</ID>
    <hire-date>2003-01-08</hire-date>
    <title>Accountant</title>
</employee>

Schema (hireDate.xsd):

<?xml version="1.0"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="urn:empl-hire" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="employee">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="ID" type="xs:unsignedShort" />
        <xs:element name="hire-date" type="xs:date" />
        <xs:element name="title" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

Kod:

// Create a validating XmlReader object. The schema
// provides the necessary type information.
XmlReaderSettings settings = new XmlReaderSettings();
settings.ValidationType = ValidationType.Schema;
settings.Schemas.Add("urn:empl-hire", "hireDate.xsd");
using (XmlReader reader = XmlReader.Create("hireDate.xml", settings)) {

  // Move to the hire-date element.
  reader.MoveToContent();
  reader.ReadToDescendant("hire-date");

  // Return the hire-date as a DateTime object.
  DateTime hireDate = reader.ReadElementContentAsDateTime();
  Console.WriteLine("Six Month Review Date: {0}", hireDate.AddMonths(6));
}
' Create a validating XmlReader object. The schema 
' provides the necessary type information.
Dim settings As XmlReaderSettings = New XmlReaderSettings()
settings.ValidationType = ValidationType.Schema
settings.Schemas.Add("urn:empl-hire", "hireDate.xsd")
Using reader As XmlReader = XmlReader.Create("hireDate.xml", settings) 
  ' Move to the hire-date element.
  reader.MoveToContent()
  reader.ReadToDescendant("hire-date")

  ' Return the hire-date as a DateTime object.
  Dim hireDate As DateTime = reader.ReadElementContentAsDateTime()
  Console.WriteLine("Six Month Review Date: {0}", hireDate.AddMonths(6))
End Using

Çıkış:

Six Month Review Date:  7/8/2003 12:00:00 AM

Asenkron programlama

Çoğu XmlReader yöntem, adlarının sonunda "Async" olan zaman uyumsuz karşılıklarına sahiptir. Örneğin, zaman uyumsuz eşdeğeri ReadContentAsObject şeklindedir ReadContentAsObjectAsync.

Aşağıdaki yöntemler zaman uyumsuz yöntem çağrılarıyla kullanılabilir:

Aşağıdaki bölümlerde, asenkron karşılıkları olmayan yöntemler için asenkron kullanım açıklanmaktadır.

ReadStartElement yöntemi

public static async Task ReadStartElementAsync(this XmlReader reader, string localname, string ns)
{
    if (await reader.MoveToContentAsync() != XmlNodeType.Element)
    {
        throw new InvalidOperationException(reader.NodeType.ToString() + " is an invalid XmlNodeType");
    }
    if ((reader.LocalName == localname) && (reader.NamespaceURI == ns))
    {
        await reader.ReadAsync();
    }
    else
    {
        throw new InvalidOperationException("localName or namespace doesn’t match");
    }
}
<Extension()>
Public Async Function ReadStartElementAsync(reader As XmlReader, localname As String, ns As String) As Task
    If (Await reader.MoveToContentAsync() <> XmlNodeType.Element) Then
        Throw New InvalidOperationException(reader.NodeType.ToString() + " is an invalid XmlNodeType")
    End If

    If ((reader.LocalName = localname) And (reader.NamespaceURI = ns)) Then
        Await reader.ReadAsync()
    Else
        Throw New InvalidOperationException("localName or namespace doesn’t match")
    End If
End Function

ReadEndElement yöntemi

public static async Task ReadEndElementAsync(this XmlReader reader)
{
    if (await reader.MoveToContentAsync() != XmlNodeType.EndElement)
    {
        throw new InvalidOperationException();
    }
    await reader.ReadAsync();
}
<Extension()>
Public Async Function ReadEndElementAsync(reader As XmlReader) As task
    If (Await reader.MoveToContentAsync() <> XmlNodeType.EndElement) Then
        Throw New InvalidOperationException()
    End If
    Await reader.ReadAsync()
End Function

ReadToNextSibling yöntemi

public static async Task<bool> ReadToNextSiblingAsync(this XmlReader reader, string localName, string namespaceURI)
{
    if (localName == null || localName.Length == 0)
    {
        throw new ArgumentException("localName is empty or null");
    }
    if (namespaceURI == null)
    {
        throw new ArgumentNullException("namespaceURI");
    }

    // atomize local name and namespace
    localName = reader.NameTable.Add(localName);
    namespaceURI = reader.NameTable.Add(namespaceURI);

    // find the next sibling
    XmlNodeType nt;
    do
    {
        await reader.SkipAsync();
        if (reader.ReadState != ReadState.Interactive)
            break;
        nt = reader.NodeType;
        if (nt == XmlNodeType.Element &&
             ((object)localName == (object)reader.LocalName) &&
             ((object)namespaceURI ==(object)reader.NamespaceURI))
        {
            return true;
        }
    } while (nt != XmlNodeType.EndElement && !reader.EOF);
    
    return false;
}
<Extension()>
Public Async Function ReadToNextSiblingAsync(reader As XmlReader, localName As String, namespaceURI As String) As Task(Of Boolean)
    If (localName = Nothing Or localName.Length = 0) Then
        Throw New ArgumentException("localName is empty or null")
    End If

    If (namespaceURI = Nothing) Then
        Throw New ArgumentNullException("namespaceURI")
    End If

    ' atomize local name and namespace
    localName = reader.NameTable.Add(localName)
    namespaceURI = reader.NameTable.Add(namespaceURI)

    ' find the next sibling
    Dim nt As XmlNodeType
    Do

        Await reader.SkipAsync()
        If (reader.ReadState <> ReadState.Interactive) Then
            Exit Do
        End If
        nt = reader.NodeType
        If ((nt = XmlNodeType.Element) And
           ((CObj(localName) = CObj(reader.LocalName))) And
           (CObj(namespaceURI) = CObj(reader.NamespaceURI))) Then
            Return True
        End If
    Loop While (nt <> XmlNodeType.EndElement And (Not reader.EOF))

    Return False

End Function

ReadToFollowing yöntemi

public static async Task<bool> ReadToFollowingAsync(this XmlReader reader, string localName, string namespaceURI)
{
    if (localName == null || localName.Length == 0)
    {
        throw new ArgumentException("localName is empty or null");
    }
    if (namespaceURI == null)
    {
        throw new ArgumentNullException("namespaceURI");
    }

    // atomize local name and namespace
    localName = reader.NameTable.Add(localName);
    namespaceURI = reader.NameTable.Add(namespaceURI);

    // find element with that name
    while (await reader.ReadAsync())
    {
        if (reader.NodeType == XmlNodeType.Element && ((object)localName == (object)reader.LocalName) && ((object)namespaceURI == (object)reader.NamespaceURI))
        {
            return true;
        }
    }
    return false;
}
<Extension()>
Public Async Function ReadToFollowingAsync(reader As XmlReader, localName As String, namespaceURI As String) As Task(Of Boolean)
    If (localName = Nothing Or localName.Length = 0) Then
        Throw New ArgumentException("localName is empty or null")
    End If

    If (namespaceURI = Nothing) Then
        Throw New ArgumentNullException("namespaceURI")
    End If

    ' atomize local name and namespace
    localName = reader.NameTable.Add(localName)
    namespaceURI = reader.NameTable.Add(namespaceURI)

    ' find element with that name
    While (Await reader.ReadAsync())
        If ((reader.NodeType = XmlNodeType.Element) And
           (CObj(localName) = CObj(reader.LocalName)) And
           (CObj(namespaceURI) = CObj(reader.NamespaceURI))) Then
            Return True
        End If
    End While

    Return False
End Function

ReadToDescendant yöntemi

public static async Task<bool> ReadToDescendantAsync(this XmlReader reader, string localName, string namespaceURI)
{
    if (localName == null || localName.Length == 0)
    {
        throw new ArgumentException("localName is empty or null");
    }
    if (namespaceURI == null)
    {
        throw new ArgumentNullException("namespaceURI");
    }
    // save the element or root depth
    int parentDepth = reader.Depth;
    if (reader.NodeType != XmlNodeType.Element)
    {
        // adjust the depth if we are on root node
        if (reader.ReadState == ReadState.Initial)
        {
            parentDepth--;
        }
        else
        {
            return false;
        }
    }
    else if (reader.IsEmptyElement)
    {
        return false;
    }

    // atomize local name and namespace
    localName = reader.NameTable.Add(localName);
    namespaceURI = reader.NameTable.Add(namespaceURI);

    // find the descendant
    while (await reader.ReadAsync() && reader.Depth > parentDepth)
    {
        if (reader.NodeType == XmlNodeType.Element && ((object)localName == (object)reader.LocalName) && ((object)namespaceURI == (object)reader.NamespaceURI))
        {
            return true;
        }
    }
    return false;
}
<Extension()>
Public Async Function ReadToDescendantAsync(reader As XmlReader, localName As String, namespaceURI As String) As Task(Of Boolean)
    If (localName = Nothing Or localName.Length = 0) Then
        Throw New ArgumentException("localName is empty or null")
    End If

    If (namespaceURI = Nothing) Then
        Throw New ArgumentNullException("namespaceURI")
    End If

    ' save the element or root depth
    Dim parentDepth As Integer = reader.Depth
    If (reader.NodeType <> XmlNodeType.Element) Then
        ' adjust the depth if we are on root node
        If (reader.ReadState = ReadState.Initial) Then
            parentDepth -= 1
        Else
            Return False
        End If
    ElseIf (reader.IsEmptyElement) Then
        Return False
    End If
    ' atomize local name and namespace
    localName = reader.NameTable.Add(localName)
    namespaceURI = reader.NameTable.Add(namespaceURI)

    ' find the descendant
    While (Await reader.ReadAsync() And reader.Depth > parentDepth)
        If (reader.NodeType = XmlNodeType.Element And
           (CObj(localName) = CObj(reader.LocalName)) And
           (CObj(namespaceURI) = CObj(reader.NamespaceURI))) Then
            Return True
        End If
    End While

    Return False
End Function

Güvenlik konuları

sınıfıyla XmlReader çalışırken aşağıdakileri göz önünde bulundurun:

  • uygulamasından XmlReader atılan özel durumlar, uygulamanıza kabarmasını istemediğiniz yol bilgilerini açıklayabilir. Uygulamanızın özel durumları yakalaması ve uygun şekilde işlemesi gerekir.

  • Hizmet reddi sorunlarıyla ilgileniyorsanız veya güvenilmeyen kaynaklarla ilgileniyorsanız DTD işlemeyi etkinleştirmeyin. Varsayılan olarak, XmlReader yöntemi ile oluşturulan Create nesneleri için DTD işleme devre dışı bırakılmıştır.

  • XML verileri, şema dosyası gibi dış kaynaklara başvurular içerebilir. Varsayılan olarak, dış kaynaklar kullanıcı kimlik bilgileri olmayan bir XmlUrlResolver nesne kullanılarak çözümlenir. Aşağıdakilerden birini yaparak bunun güvenliğini daha da sağlayabilirsiniz:

  • Bir ProcessInlineSchema nesnenin ProcessSchemaLocation ve XmlReaderSettings doğrulama bayrakları varsayılan olarak ayarlanmamıştır. Bu, güvenilmeyen bir kaynaktan XML verilerini işlerken şema tabanlı saldırılara karşı korunmasına XmlReader yardımcı olur. Bu bayraklar ayarlandığında, XmlResolver nesnesi, XmlReaderSettings öğesindeki örnek belgede XmlReader karşılaşılan şema konumlarını çözümlemek için kullanılır. XmlResolver özelliği null olarak ayarlandığında, ProcessInlineSchema ve ProcessSchemaLocation doğrulama bayrakları ayarlansa bile, şema konumları çözümlenmez.

    Doğrulama sırasında eklenen şemalar yeni türler ekler ve doğrulanan belgenin doğrulama sonucunu değiştirebilir. Sonuç olarak dış şemalar yalnızca güvenilir kaynaklardan çözümlenmelidir.

    Yüksek kullanılabilirlik senaryolarında, belgenin büyük bir bölümü üzerinde kimlik kısıtlamaları olan bir şemaya karşı güvenilmeyen, büyük XML belgelerini doğrularken ProcessIdentityConstraints bayrağını devre dışı bırakmanızı öneririz. Bu bayrak varsayılan olarak etkindir.

  • XML verileri çok sayıda öznitelik, ad alanı bildirimi, iç içe öğeler vb. içerebilir ve bu işlem için çok fazla zaman gerektirir. adresine gönderilen girişin boyutunu sınırlamak için XmlReaderşunları yapabilirsiniz:

  • ReadValueChunk yöntemi, büyük veri akışlarını işlemek için kullanılabilir. Bu yöntem, değerin tamamı için tek bir dize ayırma yerine aynı anda az sayıda karakter okur.

  • Çok sayıda benzersiz yerel ad, ad alanı veya ön ek içeren bir XML belgesini okurken bir sorun oluşabilir. Eğer XmlReader öğesinden türetilen bir sınıf kullanıyorsanız ve her bir öğe için LocalName, Prefix veya NamespaceURI özelliklerinden birini çağırırsanız, döndürülen dize bir NameTable öğesine eklenir. tarafından tutulan koleksiyonun NameTable boyutu hiç küçülmez, bu da dize tanıtıcılarının sanal bellek sızıntısına yol açar. Bu durumu hafifletmenin bir yolu, NameTable sınıfından türeterek maksimum boyut kotasını zorunlu kılmaktır. (bir NameTable öğesinin kullanılmasını engellemenin hiçbir yolu yoktur veya NameTable dolduğunda değiştirmenin de hiçbir yolu yoktur). Diğer bir önlem, belirtilen özellikleri kullanmaktan kaçınmak ve bunun yerine mümkün olduğunca MoveToAttribute yöntemiyle IsStartElement yöntemini kullanmaktır; bu yöntemler dize döndürmez ve bu nedenle NameTable koleksiyonunun aşırı doldurulması sorununu önler.

  • XmlReaderSettings nesneleri, kullanıcı kimlik bilgileri gibi hassas bilgiler içerebilir. Güvenilmeyen bir bileşen, XmlReaderSettings nesnesini ve kullanıcı kimlik bilgilerini kullanarak verileri okumak için XmlReader nesneleri oluşturabilir. Nesneleri önbelleğe alırken XmlReaderSettings veya nesneyi bir bileşenden diğerine geçirirken XmlReaderSettings dikkatli olun.

  • Güvenilmeyen bir kaynaktan , NameTableve XmlNamespaceManager nesneleri gibi XmlResolverdestekleyici bileşenleri kabul etmeyin.

Oluşturucular

Name Description
XmlReader()

XmlReader sınıfının yeni bir örneğini başlatır.

Özellikler

Name Description
AttributeCount

Türetilmiş bir sınıfta geçersiz kılındığında, geçerli düğümdeki özniteliklerin sayısını alır.

BaseURI

Türetilmiş bir sınıfta geçersiz kılındığında geçerli düğümün temel URI'sini alır.

CanReadBinaryContent

öğesinin ikili içerik okuma yöntemlerini uygulayıp uygulamadığını XmlReader belirten bir değer alır.

CanReadValueChunk

yönteminin XmlReader uygulanıp uygulanmadığını ReadValueChunk(Char[], Int32, Int32) belirten bir değer alır.

CanResolveEntity

Bu okuyucuya varlıkları ayrıştırıp çözümleyip çözümleyemeyeceğini gösteren bir değer alır.

Depth

Türetilmiş bir sınıfta geçersiz kılındığında, XML belgesindeki geçerli düğümün derinliğini alır.

EOF

Türetilmiş bir sınıfta geçersiz kılındığında, okuyucunun akışın sonunda konumlandırılıp konumlandırılmadığını belirten bir değer alır.

HasAttributes

Geçerli düğümün öznitelikleri olup olmadığını belirten bir değer alır.

HasValue

Türetilmiş bir sınıfta geçersiz kılındığında, geçerli düğümün bir olup olmadığını belirten bir Valuedeğer alır.

IsDefault

Türetilmiş bir sınıfta geçersiz kılındığında, geçerli düğümün DTD veya şemada tanımlanan varsayılan değerden oluşturulmuş bir öznitelik olup olmadığını belirten bir değer alır.

IsEmptyElement

Türetilmiş bir sınıfta geçersiz kılındığında, geçerli düğümün boş bir öğe olup olmadığını belirten bir değer alır (örneğin, <MyElement/>).

Item[Int32]

Türetilmiş bir sınıfta geçersiz kılındığında, belirtilen dizine sahip özniteliğin değerini alır.

Item[String, String]

Türetilmiş bir sınıfta geçersiz kılındığında, belirtilen LocalName ve NamespaceURIile özniteliğinin değerini alır.

Item[String]

Türetilmiş bir sınıfta geçersiz kılındığında, belirtilen Nameile özniteliğinin değerini alır.

LocalName

Türetilmiş bir sınıfta geçersiz kılındığında geçerli düğümün yerel adını alır.

Name

Türetilmiş bir sınıfta geçersiz kılındığında geçerli düğümün tam adını alır.

NamespaceURI

Türetilmiş bir sınıfta geçersiz kılındığında, okuyucunun konumlandırıldığı düğümün ad alanı URI'sini (W3C Ad Alanı belirtiminde tanımlandığı gibi) alır.

NameTable

Türetilmiş bir sınıfta geçersiz kılındığında, bu uygulamayla ilişkili alır XmlNameTable .

NodeType

Türetilmiş bir sınıfta geçersiz kılındığında geçerli düğümün türünü alır.

Prefix

Türetilmiş bir sınıfta geçersiz kılındığında, geçerli düğümle ilişkili ad alanı ön ekini alır.

QuoteChar

Türetilmiş bir sınıfta geçersiz kılındığında, öznitelik düğümünün değerini içine almak için kullanılan tırnak işareti karakterini alır.

ReadState

Türetilmiş bir sınıfta geçersiz kılındığında okuyucunun durumunu alır.

SchemaInfo

Şema doğrulamasının bir sonucu olarak geçerli düğüme atanmış şema bilgilerini alır.

Settings

XmlReaderSettings Bu XmlReader örneği oluşturmak için kullanılan nesneyi alır.

Value

Türetilmiş bir sınıfta geçersiz kılındığında geçerli düğümün metin değerini alır.

ValueType

Geçerli düğüm için Ortak Dil Çalışma Zamanı (CLR) türünü alır.

XmlLang

Türetilmiş bir sınıfta geçersiz kılındığında geçerli xml:lang kapsamı alır.

XmlSpace

Türetilmiş bir sınıfta geçersiz kılındığında geçerli xml:space kapsamı alır.

Yöntemler

Name Description
Close()

Türetilmiş bir sınıfta geçersiz kılındığında, öğesini ReadState olarak Closeddeğiştirir.

Create(Stream, XmlReaderSettings, String)

Belirtilen akışı, temel URI'yi ve ayarları kullanarak yeni XmlReader bir örnek oluşturur.

Create(Stream, XmlReaderSettings, XmlParserContext)

Ayrıştırma için belirtilen akışı, ayarları ve bağlam bilgilerini kullanarak yeni XmlReader bir örnek oluşturur.

Create(Stream, XmlReaderSettings)

Belirtilen akış ve ayarlarla yeni XmlReader bir örnek oluşturur.

Create(Stream)

Varsayılan ayarlarla belirtilen akışı kullanarak yeni XmlReader bir örnek oluşturur.

Create(String, XmlReaderSettings, XmlParserContext)

Ayrıştırma için belirtilen URI'yi, ayarları ve bağlam bilgilerini kullanarak yeni XmlReader bir örnek oluşturur.

Create(String, XmlReaderSettings)

Belirtilen URI'yi ve ayarları kullanarak yeni XmlReader bir örnek oluşturur.

Create(String)

Belirtilen URI ile yeni XmlReader bir örnek oluşturur.

Create(TextReader, XmlReaderSettings, String)

Belirtilen metin okuyucuyu, ayarları ve temel URI'yi kullanarak yeni XmlReader bir örnek oluşturur.

Create(TextReader, XmlReaderSettings, XmlParserContext)

Ayrıştırma için belirtilen metin okuyucuyu, ayarları ve bağlam bilgilerini kullanarak yeni XmlReader bir örnek oluşturur.

Create(TextReader, XmlReaderSettings)

Belirtilen metin okuyucuyu ve ayarları kullanarak yeni XmlReader bir örnek oluşturur.

Create(TextReader)

Belirtilen metin okuyucuyu kullanarak yeni XmlReader bir örnek oluşturur.

Create(XmlReader, XmlReaderSettings)

Belirtilen XML okuyucuyu ve ayarları kullanarak yeni XmlReader bir örnek oluşturur.

Dispose()

Sınıfın geçerli örneği XmlReader tarafından kullanılan tüm kaynakları serbest bırakır.

Dispose(Boolean)

tarafından XmlReader kullanılan yönetilmeyen kaynakları serbest bırakır ve isteğe bağlı olarak yönetilen kaynakları serbest bırakır.

Equals(Object)

Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler.

(Devralındığı yer: Object)
GetAttribute(Int32)

Türetilmiş bir sınıfta geçersiz kılındığında, belirtilen dizine sahip özniteliğin değerini alır.

GetAttribute(String, String)

Türetilmiş bir sınıfta geçersiz kılındığında, belirtilen LocalName ve NamespaceURIile özniteliğinin değerini alır.

GetAttribute(String)

Türetilmiş bir sınıfta geçersiz kılındığında, belirtilen Nameile özniteliğinin değerini alır.

GetHashCode()

Varsayılan karma işlevi işlevi görür.

(Devralındığı yer: Object)
GetType()

Geçerli örneğin Type alır.

(Devralındığı yer: Object)
GetValueAsync()

Geçerli düğümün değerini zaman uyumsuz olarak alır.

IsName(String)

Dize bağımsız değişkeninin geçerli bir XML adı olup olmadığını gösteren bir değer döndürür.

IsNameToken(String)

Dize bağımsız değişkeninin geçerli bir XML adı belirteci olup olmadığını belirten bir değer döndürür.

IsStartElement()

Geçerli içerik düğümü bir başlangıç etiketi veya boş öğe etiketiyse çağrılar MoveToContent() ve testler.

IsStartElement(String, String)

Geçerli içerik düğümünün bir başlangıç etiketi veya boş öğe etiketi olup olmadığını ve bulunan öğenin ve MoveToContent() özelliklerinin verilen dizelerle eşleşip eşleşmediğini LocalName çağırır NamespaceURI ve test eder.

IsStartElement(String)

Geçerli içerik düğümünün bir başlangıç etiketi veya boş öğe etiketi olup olmadığını ve bulunan öğenin özelliğinin verilen bağımsız değişkenle eşleşip eşleşmediğini MoveToContent() çağırır Name ve test eder.

LookupNamespace(String)

Türetilmiş bir sınıfta geçersiz kılındığında, geçerli öğenin kapsamındaki bir ad alanı ön ekini çözümler.

MemberwiseClone()

Geçerli Objectbasit bir kopyasını oluşturur.

(Devralındığı yer: Object)
MoveToAttribute(Int32)

Türetilmiş bir sınıfta geçersiz kılındığında, belirtilen dizine sahip özniteliğine geçer.

MoveToAttribute(String, String)

Türetilmiş bir sınıfta geçersiz kılındığında, belirtilen LocalName ve NamespaceURIile özniteliğine geçer.

MoveToAttribute(String)

Türetilmiş bir sınıfta geçersiz kılındığında, belirtilen Nameile özniteliğine geçer.

MoveToContent()

Geçerli düğümün bir içerik (boşluk olmayan metin, CDATA, , Element, EndElementEntityReferenceveya EndEntity) düğümü olup olmadığını denetler. Düğüm bir içerik düğümü değilse okuyucu sonraki içerik düğümüne veya dosyanın sonuna atlar. Şu türdeki düğümleri atlar: ProcessingInstruction, DocumentType, Comment, Whitespaceveya SignificantWhitespace.

MoveToContentAsync()

Geçerli düğümün bir içerik düğümü olup olmadığını zaman uyumsuz olarak denetler. Düğüm bir içerik düğümü değilse okuyucu sonraki içerik düğümüne veya dosyanın sonuna atlar.

MoveToElement()

Türetilmiş bir sınıfta geçersiz kılındığında, geçerli öznitelik düğümünü içeren öğeye geçer.

MoveToFirstAttribute()

Türetilmiş bir sınıfta geçersiz kılındığında, ilk özniteliğe geçer.

MoveToNextAttribute()

Türetilmiş bir sınıfta geçersiz kılındığında, sonraki özniteliğe geçer.

Read()

Türetilmiş bir sınıfta geçersiz kılındığında, akıştan sonraki düğümü okur.

ReadAsync()

Akıştan bir sonraki düğümü zaman uyumsuz olarak okur.

ReadAttributeValue()

Türetilmiş bir sınıfta geçersiz kılındığında, öznitelik değerini bir veya daha fazla Text, EntityReferenceveya EndEntity düğüme ayrıştırılır.

ReadContentAs(Type, IXmlNamespaceResolver)

İçeriği belirtilen türde bir nesne olarak okur.

ReadContentAsAsync(Type, IXmlNamespaceResolver)

İçeriği zaman uyumsuz olarak belirtilen türde bir nesne olarak okur.

ReadContentAsBase64(Byte[], Int32, Int32)

İçeriği okur ve Base64 kod çözme ikili baytlarını döndürür.

ReadContentAsBase64Async(Byte[], Int32, Int32)

İçeriği zaman uyumsuz olarak okur ve Base64 kod çözme ikili baytlarını döndürür.

ReadContentAsBinHex(Byte[], Int32, Int32)

İçeriği okur ve kodu çözülen ikili baytları döndürür BinHex .

ReadContentAsBinHexAsync(Byte[], Int32, Int32)

İçeriği zaman uyumsuz olarak okur ve çözülen ikili baytları BinHex döndürür.

ReadContentAsBoolean()

Geçerli konumdaki metin içeriğini olarak Booleanokur.

ReadContentAsDateTime()

Geçerli konumdaki metin içeriğini nesne DateTime olarak okur.

ReadContentAsDateTimeOffset()

Geçerli konumdaki metin içeriğini nesne DateTimeOffset olarak okur.

ReadContentAsDecimal()

Geçerli konumdaki metin içeriğini nesne Decimal olarak okur.

ReadContentAsDouble()

Geçerli konumdaki metin içeriğini çift duyarlıklı kayan noktalı sayı olarak okur.

ReadContentAsFloat()

Geçerli konumdaki metin içeriğini tek duyarlıklı kayan nokta numarası olarak okur.

ReadContentAsInt()

Geçerli konumdaki metin içeriğini 32 bit imzalı tamsayı olarak okur.

ReadContentAsLong()

Geçerli konumdaki metin içeriğini 64 bit imzalı tamsayı olarak okur.

ReadContentAsObject()

Geçerli konumdaki metin içeriğini olarak Objectokur.

ReadContentAsObjectAsync()

Geçerli konumdaki metin içeriğini zaman uyumsuz olarak olarak Objectokur.

ReadContentAsString()

Geçerli konumdaki metin içeriğini nesne String olarak okur.

ReadContentAsStringAsync()

Geçerli konumdaki metin içeriğini zaman uyumsuz olarak nesne String olarak okur.

ReadElementContentAs(Type, IXmlNamespaceResolver, String, String)

Belirtilen yerel adın ve ad alanı URI'sinin geçerli öğeyle eşleşip eşleşmediğini denetler, ardından öğe içeriğini istenen tür olarak okur.

ReadElementContentAs(Type, IXmlNamespaceResolver)

öğe içeriğini istenen tür olarak okur.

ReadElementContentAsAsync(Type, IXmlNamespaceResolver)

öğe içeriğini istenen tür olarak zaman uyumsuz olarak okur.

ReadElementContentAsBase64(Byte[], Int32, Int32)

öğesini okur ve içeriğin kodunu Base64 çözer.

ReadElementContentAsBase64Async(Byte[], Int32, Int32)

Öğeyi zaman uyumsuz olarak okur ve içeriğin kodunu çözer Base64 .

ReadElementContentAsBinHex(Byte[], Int32, Int32)

öğesini okur ve içeriğin kodunu BinHex çözer.

ReadElementContentAsBinHexAsync(Byte[], Int32, Int32)

Öğeyi zaman uyumsuz olarak okur ve içeriğin kodunu çözer BinHex .

ReadElementContentAsBoolean()

Geçerli öğeyi okur ve içeriğini nesne Boolean olarak döndürür.

ReadElementContentAsBoolean(String, String)

Belirtilen yerel ad ve ad alanı URI'sinin geçerli öğeyle eşleşip eşleşmediğini denetler, ardından geçerli öğeyi okur ve içeriği nesne Boolean olarak döndürür.

ReadElementContentAsDateTime()

Geçerli öğeyi okur ve içeriğini nesne DateTime olarak döndürür.

ReadElementContentAsDateTime(String, String)

Belirtilen yerel ad ve ad alanı URI'sinin geçerli öğeyle eşleşip eşleşmediğini denetler, ardından geçerli öğeyi okur ve içeriği nesne DateTime olarak döndürür.

ReadElementContentAsDecimal()

Geçerli öğeyi okur ve içeriğini nesne Decimal olarak döndürür.

ReadElementContentAsDecimal(String, String)

Belirtilen yerel ad ve ad alanı URI'sinin geçerli öğeyle eşleşip eşleşmediğini denetler, ardından geçerli öğeyi okur ve içeriği nesne Decimal olarak döndürür.

ReadElementContentAsDouble()

Geçerli öğeyi okur ve içeriğini çift duyarlıklı kayan noktalı sayı olarak döndürür.

ReadElementContentAsDouble(String, String)

Belirtilen yerel ad ve ad alanı URI'sinin geçerli öğeyle eşleşip eşleşmediğini denetler, ardından geçerli öğeyi okur ve içeriği çift duyarlıklı kayan noktalı sayı olarak döndürür.

ReadElementContentAsFloat()

Geçerli öğeyi okur ve içeriği tek duyarlıklı kayan nokta numarası olarak döndürür.

ReadElementContentAsFloat(String, String)

Belirtilen yerel adın ve ad alanı URI'sinin geçerli öğeyle eşleşip eşleşmediğini denetler, ardından geçerli öğeyi okur ve içeriği tek duyarlıklı kayan noktalı sayı olarak döndürür.

ReadElementContentAsInt()

Geçerli öğeyi okur ve içeriği 32 bit imzalı tamsayı olarak döndürür.

ReadElementContentAsInt(String, String)

Belirtilen yerel ad ve ad alanı URI'sinin geçerli öğeyle eşleşip eşleşmediğini denetler, ardından geçerli öğeyi okur ve içeriği 32 bit imzalı bir tamsayı olarak döndürür.

ReadElementContentAsLong()

Geçerli öğeyi okur ve içeriği 64 bit imzalı tamsayı olarak döndürür.

ReadElementContentAsLong(String, String)

Belirtilen yerel ad ve ad alanı URI'sinin geçerli öğeyle eşleşip eşleşmediğini denetler, ardından geçerli öğeyi okur ve içeriği 64 bit imzalı bir tamsayı olarak döndürür.

ReadElementContentAsObject()

Geçerli öğeyi okur ve içeriğini olarak Objectdöndürür.

ReadElementContentAsObject(String, String)

Belirtilen yerel ad ve ad alanı URI'sinin geçerli öğeyle eşleşip eşleşmediğini denetler, ardından geçerli öğeyi okur ve içeriğini olarak Objectdöndürür.

ReadElementContentAsObjectAsync()

Geçerli öğeyi zaman uyumsuz olarak okur ve içeriğini olarak Objectdöndürür.

ReadElementContentAsString()

Geçerli öğeyi okur ve içeriğini nesne String olarak döndürür.

ReadElementContentAsString(String, String)

Belirtilen yerel ad ve ad alanı URI'sinin geçerli öğeyle eşleşip eşleşmediğini denetler, ardından geçerli öğeyi okur ve içeriği nesne String olarak döndürür.

ReadElementContentAsStringAsync()

Geçerli öğeyi zaman uyumsuz olarak okur ve içeriği nesne String olarak döndürür.

ReadElementString()

Salt metin öğesini okur. Ancak, bu işlemi işlemek için daha kolay bir yol sağladığından yöntemini kullanmanızı ReadElementContentAsString() öneririz.

ReadElementString(String, String)

Bulunan öğenin ve LocalName özelliklerinin, yalnızca metin içeren bir öğeyi okumadan önce verilen dizelerle eşleşip eşleşmediğini NamespaceURI denetler. Ancak, bu işlemi işlemek için daha kolay bir yol sağladığından yöntemini kullanmanızı ReadElementContentAsString(String, String) öneririz.

ReadElementString(String)

Name Bulunan öğenin özelliğinin, yalnızca metin içeren bir öğeyi okumadan önce verilen dizeyle eşleştiğini denetler. Ancak, bu işlemi işlemek için daha kolay bir yol sağladığından yöntemini kullanmanızı ReadElementContentAsString() öneririz.

ReadEndElement()

Geçerli içerik düğümünü bir bitiş etiketi olup olmadığını denetler ve okuyucuyu sonraki düğüme ilerler.

ReadInnerXml()

Türetilmiş bir sınıfta geçersiz kılındığında, işaretleme de dahil olmak üzere tüm içeriği dize olarak okur.

ReadInnerXmlAsync()

İşaretleme de dahil olmak üzere tüm içeriği zaman uyumsuz olarak dize olarak okur.

ReadOuterXml()

Türetilmiş bir sınıfta geçersiz kılındığında, bu düğümü ve tüm alt öğelerini temsil eden işaretleme de dahil olmak üzere içeriği okur.

ReadOuterXmlAsync()

bu düğümü ve tüm alt öğelerini temsil eden işaretleme de dahil olmak üzere içeriği zaman uyumsuz olarak okur.

ReadStartElement()

Geçerli düğümün bir öğe olduğunu denetler ve okuyucuyu sonraki düğüme ilerler.

ReadStartElement(String, String)

Geçerli içerik düğümünü verilen LocalName ile bir öğe olup olmadığını denetler ve NamespaceURI okuyucuyu sonraki düğüme ilerler.

ReadStartElement(String)

Geçerli içerik düğümünü verilen Name bir öğe olup olmadığını denetler ve okuyucuyu sonraki düğüme ilerler.

ReadString()

Türetilmiş bir sınıfta geçersiz kılındığında, bir öğenin veya metin düğümünün içeriğini dize olarak okur. Ancak, bu işlemi işlemek için daha kolay bir yol sağladığından yöntemini kullanmanızı ReadElementContentAsString öneririz.

ReadSubtree()

Geçerli düğümü ve tüm alt öğeleri okumak için kullanılabilecek yeni XmlReader bir örnek döndürür.

ReadToDescendant(String, String)

öğesini belirtilen yerel ad ve ad alanı URI'siyle sonraki alt öğeye ilerler XmlReader .

ReadToDescendant(String)

öğesini belirtilen nitelenmiş adla sonraki alt öğeye ilerler XmlReader .

ReadToFollowing(String, String)

Belirtilen yerel ada ve ad alanı URI'sine sahip bir öğe bulunana kadar okur.

ReadToFollowing(String)

Belirtilen nitelenmiş ada sahip bir öğe bulunana kadar okur.

ReadToNextSibling(String, String)

belirtilen yerel ad ve ad alanı URI'siyle öğesini sonraki eşdüzey öğeye ilerler XmlReader .

ReadToNextSibling(String)

öğesini belirtilen nitelenmiş ada sahip bir sonraki eşdüzey öğeye ilerler XmlReader .

ReadValueChunk(Char[], Int32, Int32)

XML belgesine eklenmiş büyük metin akışlarını okur.

ReadValueChunkAsync(Char[], Int32, Int32)

XML belgesine eklenmiş büyük metin akışlarını zaman uyumsuz olarak okur.

ResolveEntity()

Türetilmiş bir sınıfta geçersiz kılındığında düğümler için EntityReference varlık başvurularını çözümler.

Skip()

Geçerli düğümün alt öğelerini atlar.

SkipAsync()

Geçerli düğümün alt öğelerini zaman uyumsuz olarak atlar.

ToString()

Geçerli nesneyi temsil eden bir dize döndürür.

(Devralındığı yer: Object)

Belirtik Arabirim Kullanımları

Name Description
IDisposable.Dispose()

Bu üyenin açıklaması için bkz Dispose(). .

Şunlara uygulanır

Ayrıca bkz.