Aracılığıyla paylaş


System.Xml.XmlTextReader sınıfı

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

Uyarı

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

XmlTextReader sadece ileri yönlü, salt okunur bir XML veri akışına erişim sağlar. Geçerli düğüm, okuyucunun bulunduğu düğüme işaret eder. Okuyucu, okuma yöntemlerinden herhangi birini kullanarak ilerletilir 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ş olduğunu denetleyin DocumentType. XmlTextReader DTD'yi iyi biçimlendirilmişlük açısından denetler, ancak DTD kullanarak doğrulamaz.

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

Uyarı

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

  • Varsayılan öznitelikleri genişletmez.

XmlTextReader veri doğrulaması için gereken ek denetimleri gerçekleştirmediğinden, iyi biçimlendirilmiş hızlı bir 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.

XmlTextReader XML ayrıştırma hatası durumunda XmlException atar. Ö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üvenlikle ilgili dikkat edilmesi gerekenler

Aşağıda XmlTextReader sınıfını kullanırken göz önünde bulundurmanız gerekenler bulunmaktadır.

  • Fırlatılan 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, XmlSecureResolver öğesini kullanarak XmlTextReader'nin erişebileceği kaynakları 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. Girişin XmlTextReader öğesine gönderileceği boyutunu sınırlamak için özel bir IStream uygulaması oluşturun ve bu uygulamayı XmlTextReader için kullanın.

  • 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şletilmez. Yöntemini çağırdığınızda ResolveEntity genel varlıklar genişletilir.