Share via


System.Xml.XmlTextReader sınıfı

Bu makale, bu API'nin başvuru belgelerine ek açıklamalar sağlar.

Not

Yeni işlevlerden yararlanmak için yöntemini kullanarak XmlReader.Create örnekler oluşturmanızı XmlReader öneririz.

XmlTextReader BIR XML veri akışına salt iletme, salt okunur erişim sağlar. Geçerli düğüm, okuyucunun bulunduğu düğüme başvurur. Okuyucu, okuma yöntemlerinden herhangi birini kullanarak gelişmiştir ve özellikler geçerli düğümün değerini yansıtır.

Bu sınıf, W3C Genişletilebilir Biçimlendirme Dili (XML) 1.0 ve XML önerilerindeki Ad Alanları'nı uygular XmlReader ve bunlara uygundur. XmlTextReader aşağıdaki işlevleri sağlar:

  • İyi biçimlendirilmiş XML kurallarını uygular.

  • XmlTextReader veri doğrulama sağlamaz.

  • Düğümlerin iyi biçimlendirilmiş olup olmadığını DocumentType denetler. XmlTextReader DTD'yi iyi biçimlendirilmişlük açısından denetler, ancak DTD kullanarak doğrulamaz.

  • olduğu NodeType düğümler XmlNodeType.EntityReferenceiçin tek bir boş EntityReference düğüm döndürülür (yani Value özelliği olur String.Empty).

Not

DTD'deki varlıkların gerçek bildirimleri düğüm olarak adlandırılır Entity . Verilerinizdeki bu düğümlere başvurduysanız bunlara düğüm adı verilir EntityReference .

  • Varsayılan öznitelikleri genişletmez.

XmlTextReader veri doğrulaması için gereken ek denetimleri gerçekleştirmediğinden, hızlı bir iyi biçimlendirilmiş ayrıştırıcı sağlar.

Veri doğrulama gerçekleştirmek için bir doğrulama XmlReaderkullanın.

bir XmlDocumentöğesinden XML verilerini okumak için kullanın XmlNodeReader.

XmlTextReaderXmlException xml ayrıştırma hataları oluşturur. Özel durum oluşturulduktan sonra okuyucunun durumu tahmin edilebilir değildir. Örneğin, bildirilen düğüm türü geçerli düğümün gerçek düğüm türünden farklı olabilir. Bir okuyucunun ReadState hata durumunda olup olmadığını denetlemek için özelliğini kullanın.

Güvenlik konuları

Sınıfını kullanırken göz önünde bulundurmanız gerekenler aşağıdadır XmlTextReader .

  • oluşan XmlTextReader özel durumlar, uygulamaya kabarmasını istemediğiniz yol bilgilerini açıklayabilir. Uygulamalarınız özel durumları yakalamalı ve uygun şekilde işlemelidir.

  • DTD işleme varsayılan olarak etkindir. Hizmet Reddi sorunlarıyla ilgileniyorsanız veya güvenilmeyen kaynaklarla ilgileniyorsanız DTD işlemeyi devre dışı bırakın. DTD işlemeyi DtdProcessing devre dışı bırakmak için özelliğini Prohibit olarak ayarlayın.

    DTD işlemeyi etkinleştirdiyseniz, öğesini kullanarak XmlSecureResolver erişebileceği kaynakları XmlTextReader kısıtlayabilirsiniz. Ayrıca uygulamanızı, XML işlemenin bellek ve zaman kısıtlaması olacak şekilde tasarlayabilirsiniz. Örneğin, ASP.NET uygulamanızda zaman aşımı sınırlarını yapılandırın.

  • XML verileri, DTD 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:

  • 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. öğesine gönderilen girişin boyutunu sınırlamak için XmlTextReaderözel bir IStream uygulaması oluşturun ve bunu sağlayın XmlTextReader.

  • 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.

  • Varsayılan olarak genel varlıklar genişletilmemiştir. Yöntemini çağırdığınızda ResolveEntity genel varlıklar genişletilir.