Aracılığıyla paylaş


System.Xml Ad Alanı

XML işleme için standartlara dayalı destek sağlar.

Sınıflar

NameTable

Tek iş parçacıklı XmlNameTablebir uygular.

UniqueId

Guid'ler için iyileştirilmiş bir benzersiz tanımlayıcı.

XmlAttribute

Bir özniteliği temsil eder. Özniteliğin geçerli ve varsayılan değerleri belge türü tanımında (DTD) veya şemada tanımlanır.

XmlAttributeCollection

Ada veya dizine göre erişilebilen öznitelik koleksiyonunu temsil eder.

XmlBinaryReaderSession

İyileştirilmiş dizelerin dinamik bir şekilde yönetilmesine olanak tanır.

XmlBinaryWriterSession

İletide görünen ortak dizeleri sıkıştırmak ve durumu korumak için dinamik bir sözlük kullanılmasına olanak tanır.

XmlCDataSection

CDATA bölümünü temsil eder.

XmlCharacterData

Çeşitli sınıflar tarafından kullanılan metin işleme yöntemleri sağlar.

XmlComment

XML açıklamasının içeriğini temsil eder.

XmlConvert

XML adlarını kodlar, bu adların kodunu çözer ve ortak dil çalışma zamanı türleri ile XML şema tanımlama dili (XSD) türleri arasında dönüştürme yöntemleri sağlar. Veri türleri dönüştürülürken, döndürülen değerler yerel ayardan bağımsızdır.

XmlDataDocument

Yapılandırılmış verilerin ilişkisel DataSetbir aracılığıyla depolanmasına, alınmasına ve yönlendirilmesine izin verir.

XmlDeclaration

?xml version='1.0'...?>XML bildirim düğümünü <temsil eder.

XmlDictionary

Windows Communication Foundation'ın (WCF) XML okuyucu/yazıcı uygulamalarını iyileştirmek için kullanılan bir sözlük sağlar.

XmlDictionaryReader

abstract Serileştirme ve seri durumdan çıkarma yapmak için Windows Communication Foundation'ın (WCF) türetilen XmlReader bir sınıf.

XmlDictionaryReaderQuotas

XmlDictionaryReaders için yapılandırılabilir kota değerlerini içerir.

XmlDictionaryString

içinde depolanan bir XmlDictionarygirdiyi temsil eder.

XmlDictionaryWriter

Windows Communication Foundation'ın (WCF) serileştirme ve seri durumdan çıkarma yapmak için türettiği XmlWriter soyut sınıfı temsil eder.

XmlDocument

XML belgesini temsil eder. Belgedeki XML'yi yüklemek, doğrulamak, düzenlemek, eklemek ve konumlandırmak için bu sınıfı kullanabilirsiniz.

XmlDocumentFragment

Ağaç ekleme işlemleri için yararlı olan basit bir nesneyi temsil eder.

XmlDocumentType

Belge türü bildirimini temsil eder.

XmlDocumentXPathExtensions

ve için ve belge gezintisi XmlDocumentXmlNode için uzantı yöntemleri sağlar.

XmlElement

Bir öğeyi temsil eder.

XmlEntity

! gibi <bir varlık bildirimini temsil eder VARLıK... >.

XmlEntityReference

Varlık başvuru düğümünü temsil eder.

XmlException

Son özel durum hakkında ayrıntılı bilgi döndürür.

XmlImplementation

Bir nesne kümesinin bağlamını XmlDocument tanımlar.

XmlLinkedNode

Bu düğümün hemen önündeki veya arkasındaki düğümü alır.

XmlNamedNodeMap

Ad veya dizinle erişilebilen düğüm koleksiyonunu temsil eder.

XmlNamespaceManager

Bir koleksiyona ad alanlarını çözümler, ekler ve kaldırır ve bu ad alanları için kapsam yönetimi sağlar.

XmlNameTable

Küçük parçalara ayrılmış dize nesneleri tablosu.

XmlNode

XML belgesindeki tek bir düğümü temsil eder.

XmlNodeChangedEventArgs

, , NodeChanging, NodeRemovedNodeInsertedNodeInsertingve NodeRemoving olayları için NodeChangedveri sağlar.

XmlNodeList

Sıralı düğüm koleksiyonunu temsil eder.

XmlNodeReader

bir içindeki XML verilerine yalnızca hızlı, önbelleğe alınmamış ileriye doğru erişim sağlayan bir XmlNodeokuyucudur.

XmlNotation

! gibi <bir gösterimi bildirimini temsil eder NOTASYON... >.

XmlParserContext

bir XML parçasını ayrıştırmak için için gereken XmlReader tüm bağlam bilgilerini sağlar.

XmlProcessingInstruction

XML'nin işlemciye özgü bilgileri belge metninde tutmak için tanımladığı işleme yönergelerini temsil eder.

XmlQualifiedName

XML tam adını temsil eder.

XmlReader

XML verilerine hızlı, önbelleğe alınmamış, yalnızca ileriye doğru erişim sağlayan bir okuyucuyu temsil eder.

XmlReaderSettings

yöntemi tarafından Create oluşturulan nesnede XmlReader destek eklenecek bir özellik kümesini belirtir.

XmlResolver

Tekdüzen Kaynak Tanımlayıcısı (URI) tarafından adlandırılan dış XML kaynaklarını çözümler.

XmlSecureResolver

Nesnesini sarmalayarak XmlResolver ve temel alınan XmlResolver kaynağın XmlResolver erişimi olan kaynakları kısıtlayarak uygulamasının başka bir uygulamasının güvenliğini sağlar.

XmlSignificantWhitespace

Karma içerik düğümündeki işaretleme arasındaki veya xml:space= 'preserve' kapsamı içindeki boşluğu temsil eder. Bu, önemli boşluk olarak da adlandırılır.

XmlText

Bir öğenin veya özniteliğin metin içeriğini temsil eder.

XmlTextReader

XML verilerine hızlı, önbelleğe alınmamış, yalnızca ileriye doğru erişim sağlayan bir okuyucuyu temsil eder.

.NET Framework 2.0'dan başlayarak sınıfını XmlReader kullanmanızı öneririz.

XmlTextWriter

W3C Genişletilebilir Biçimlendirme Dili (XML) 1.0 ve XML önerilerindeki Ad Alanları ile uyumlu XML verileri içeren akışlar veya dosyalar oluşturmanın hızlı, önbelleğe alınmamış, yalnızca ileri doğru bir yolunu sağlayan yazıcıyı temsil eder.

.NET Framework 2.0'dan başlayarak sınıfını XmlWriter kullanmanızı öneririz.

XmlUrlResolver

Tekdüzen Kaynak Tanımlayıcısı (URI) tarafından adlandırılan dış XML kaynaklarını çözümler.

XmlValidatingReader

Belge türü tanımı (DTD), XML-Data Azaltılmış (XDR) şeması ve XML Şeması tanım dili (XSD) doğrulaması sağlayan bir okuyucudur.

Bu sınıf artık kullanılmıyor. .NET Framework 2.0'dan başlayarak, doğrulayıcı bir XML okuyucu oluşturmak için sınıfını Create ve yöntemini kullanmanızı XmlReaderSettings öneririz.

XmlWhitespace

Öğe içeriğindeki boşluğu temsil eder.

XmlWriter

XML verileri içeren akışlar veya dosyalar oluşturmanın hızlı, önbelleğe alınmamış, yalnızca ileri doğru bir yolunu sağlayan yazıcıyı temsil eder.

XmlWriterSettings

yöntemi tarafından Create oluşturulan nesnede XmlWriter destek eklenecek bir özellik kümesini belirtir.

XmlXapResolver

XmlXapResolver türü, Silverlight uygulamasının XAP paketindeki kaynakları çözümlemek için kullanılır.

Arabirimler

IApplicationResourceStreamResolver

Bir uygulama kaynak akışı çözümleyiciyi temsil eder.

IFragmentCapableXmlDictionaryWriter

bir XmlDictionaryWritertarafından uygulandığında XML parçalarının işlenmesine izin veren özellikler ve yöntemler içerir.

IHasXmlNode

Bir sınıfın geçerli bağlamdan veya konumdan döndürmesini XmlNode sağlar.

IStreamProvider

Akış sağlayan sınıflar tarafından uygulanabilen bir arabirimi temsil eder.

IXmlBinaryReaderInitializer

Yeni bir belgeyi okumak için ikili okuyucuya yeniden başlatma yöntemleri sağlar.

IXmlBinaryWriterInitializer

Bu arabirimden türetilen XML ikili yazıcıları için uygulama gereksinimlerini belirtir.

IXmlDictionary

Bir interface Xml sözlüğü tarafından ve uygulamaları tarafından XmlDictionaryReaderXmlDictionaryWriter kullanılmak üzere uygulanması gereken sözleşmeyi tanımlayan.

IXmlLineInfo

Bir sınıfın satır ve konum bilgilerini döndürmesini sağlamak için bir arabirim sağlar.

IXmlMtomReaderInitializer

Bu arabirimden türetilen XML MTOM okuyucuları için uygulama gereksinimlerini belirtir.

IXmlMtomWriterInitializer

Bir MTOM yazıcısı tarafından uygulandığında, bu arabirim bir MTOM yazıcı için başlatmayı güvence altına alır.

IXmlNamespaceResolver

Bir ön ek ve ad alanı eşleme kümesine salt okunur erişim sağlar.

IXmlTextReaderInitializer

Bu arabirimden türetilen XML metin okuyucuları için uygulama gereksinimlerini belirtir.

IXmlTextWriterInitializer

Bu arabirimden türetilen XML metin yazıcıları için uygulama gereksinimlerini belirtir.

Numaralandırmalar

ConformanceLevel

ve XmlWriter nesnelerinin gerçekleştirdiği giriş veya çıkış denetimi XmlReader miktarını belirtir.

DtdProcessing

DTD'leri işleme seçeneklerini belirtir. DtdProcessing Numaralandırma sınıfı tarafından XmlReaderSettings kullanılır.

EntityHandling

veya XmlValidatingReader varlıklarını XmlTextReader nasıl işleyeceklerini belirtir.

Formatting

için XmlTextWriterbiçimlendirme seçeneklerini belirtir.

NamespaceHandling

içinde yinelenen ad alanı bildirimlerinin XmlWriterkaldırılıp kaldırılmayacağını belirtir.

NewLineHandling

Satır sonlarının nasıl iş yapılacağını belirtir.

ReadState

Okuyucunun durumunu belirtir.

ValidationType

Gerçekleştirilecek doğrulama türünü belirtir.

WhitespaceHandling

Boşluğun nasıl işlenmiş olduğunu belirtir.

WriteState

durumunu XmlWriterbelirtir.

XmlDateTimeSerializationMode

dize ile DateTimearasında dönüştürme yaparken zaman değerinin nasıl ele alınıp alın gitecegi belirtir.

XmlDictionaryReaderQuotaTypes

XmlDictionaryReaders için yapılandırılabilir kota değerlerini numaralandırır.

XmlNamespaceScope

Ad alanı kapsamını tanımlar.

XmlNodeChangedAction

Düğüm değişikliğinin türünü belirtir.

XmlNodeOrder

Bir düğümün ikinci düğümle karşılaştırıldığında belge sırasını açıklar.

XmlNodeType

Düğüm türünü belirtir.

XmlOutputMethod

Çıkışı serileştirmek XmlWriter için kullanılan yöntemi belirtir.

XmlSpace

Geçerli xml:space kapsamı belirtir.

XmlTokenizedType

Dizenin XML türünü temsil eder. Bu, dizenin belirli bir XML türü olarak (örneğin, bir CDATA bölüm türü) okunmasını sağlar.

Temsilciler

OnXmlDictionaryReaderClose

delegate okuyucuyu kapatırken geri çağırma yöntemi için.

XmlNodeChangedEventHandler

, , NodeChanging, NodeRemovedNodeInsertedNodeInsertingve NodeRemoving olaylarını NodeChangedişleyen yöntemi temsil eder.

Açıklamalar

Desteklenen standartlar

Ad System.Xml alanı şu standartları destekler:

XML sınıflarının W3C önerilerinden farklı olduğu iki durum için W3C belirtimlerinden farklar bölümüne bakın.

.NET, XML ile ilgili işlemler için başka ad alanları da sağlar. Liste, açıklamalar ve bağlantılar için bkz. ad alanlarıSystem.Xml.

XML zaman uyumsuz olarak işleniyor

System.Xml.XmlReader ve System.Xml.XmlWriter sınıfları, zaman uyumsuz programlama modelini temel alan bir dizi zaman uyumsuz yöntem içerir. Bu yöntemler adlarının sonundaki "Async" dizesiyle tanımlanabilir. Bu yöntemlerle, zaman uyumlu kodunuzla benzer zaman uyumsuz kod yazabilir ve mevcut zaman uyumlu kodunuzu zaman uyumsuz koda kolayca geçirebilirsiniz.

  • Önemli ağ akışı gecikme süresi olan uygulamalarda zaman uyumsuz yöntemleri kullanın. Bellek akışı veya yerel dosya akışı okuma/yazma işlemleri için zaman uyumsuz API'leri kullanmaktan kaçının. giriş akışı, XmlTextReaderve XmlTextWriter zaman uyumsuz işlemleri de desteklemelidir. Aksi takdirde, iş parçacıkları G/Ç işlemleri tarafından engellenmeye devam eder.

  • Zaman uyumlu ve zaman uyumsuz işlev çağrılarını karıştırmanızı önermiyoruz, çünkü anahtar sözcüğünü kullanmayı await unutabilir veya zaman uyumsuz bir API'nin gerekli olduğu zaman uyumlu API'yi kullanabilirsiniz.

  • Zaman uyumsuz bir yöntem kullanmayı düşünmüyorsanız veya XmlWriterSettings.Async bayrağını true olarak ayarlamayınXmlReaderSettings.Async.

  • Zaman uyumsuz bir yöntemi çağırdığınızda anahtar sözcüğünü belirtmeyi await unutursanız, sonuçlar belirlenimci değildir: Beklediğiniz sonucu veya özel durumu alabilirsiniz.

  • Bir XmlReader nesne büyük bir metin düğümünü okurken yalnızca kısmi bir metin değerini önbelleğe alıp metin düğümünü döndürebilir, bu nedenle özelliğin XmlReader.Value alınması G/Ç işlemi tarafından engellenebilir. XmlReader.GetValueAsync Zaman uyumsuz modda metin değerini almak için yöntemini kullanın veya öbekler halinde büyük bir metin bloğunu okumak için yöntemini kullanınXmlReader.ReadValueChunkAsync.

  • Bir XmlWriter nesne kullandığınızda, G/Ç işlemini engellememek için çağırmadan XmlWriter.Close önce yöntemini çağırınXmlWriter.FlushAsync.

W3C belirtimlerinden farklar

Model grubu şema bileşenlerinde kısıtlamalar içeren iki durumda, System.Xml ad alanı W3C önerilerinden farklıdır.

Öğe bildirimlerinde tutarlılık:

Bazı durumlarda, değiştirme grupları kullanıldığında, System.Xml uygulama W3C belirtiminin Model Grubu Şema Bileşenlerindeki Kısıtlamalar bölümünde açıklanan "Şema Bileşeni Kısıtlaması: Öğe Bildirimleri Tutarlı" değerini karşılamaz.

Örneğin, aşağıdaki şema aynı ada ancak aynı içerik modelinde farklı türlere sahip öğeleri içerir ve değiştirme grupları kullanılır. Bu hataya neden olmalıdır, ancak System.Xml şemayı hatasız olarak derleyip doğrular.

<?xml version="1.0" encoding="utf-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">

   <xs:element name="e1" type="t1"/>
   <xs:complexType name="t1"/>

   <xs:element name="e2" type="t2" substitutionGroup="e1"/>
      <xs:complexType name="t2">
         <xs:complexContent>
            <xs:extension base="t1">
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>

   <xs:complexType name="t3">
      <xs:sequence>
         <xs:element ref="e1"/>
         <xs:element name="e2" type="xs:int"/>
      </xs:sequence>
   </xs:complexType>
</xs:schema>

Bu şemada, tür t3 bir öğe dizisi içerir. Değiştirme nedeniyle, dizideki öğeye e1 yapılan başvuru türün öğesiyle e1 veya türündeki t1t2öğesiyle e2 sonuçlanabilir. İkinci durum, biri türünde, diğeri türünde t2 olmak üzere iki e2 öğeden oluşan xs:intbir diziyle sonuçlanır.

Benzersiz parçacık atfı:

Aşağıdaki koşullar altında, System.Xml uygulama W3C belirtiminin Model Grubu Şema Bileşenlerindeki Kısıtlamalar bölümünde açıklanan "Şema Bileşeni Kısıtlaması: Benzersiz Parçacık İlişkilendirmesi" ni karşılamaz.

  • Gruptaki öğelerden biri başka bir öğeye başvurur.

  • Başvuruda bulunan öğe, bir değiştirme grubunun baş öğesidir.

  • Değiştirme grubu, gruptaki öğelerden biriyle aynı ada sahip bir öğe içerir.

  • Değiştirme grubu baş öğesine başvuran öğenin kardinalitesi ve bir değiştirme grubu öğesiyle aynı ada sahip öğe sabit değildir (minOccurs < maxOccurs).

  • Değiştirme grubuna başvuran öğesinin tanımı, öğesinin tanımından önce bir değiştirme grubu öğesiyle aynı ada sahiptir.

Örneğin, içerik modelinin altındaki şemada belirsizdir ve derleme hatasına neden olmalıdır, ancak System.Xml şemayı hatasız olarak derler.

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">

  <xs:element name="e1" type="xs:int"/>
  <xs:element name="e2" type="xs:int" substitutionGroup="e1"/>

  <xs:complexType name="t3">
    <xs:sequence>
      <xs:element ref="e1" minOccurs="0" maxOccurs="1"/>
      <xs:element name="e2" type="xs:int" minOccurs="0" maxOccurs="1"/>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="e3" type="t3"/>
</xs:schema>

Yukarıdaki şemada aşağıdaki XML'yi doğrulamaya çalışırsanız doğrulama şu iletiyle başarısız olur: "'e3' öğesinde geçersiz 'e2' alt öğesi var." ve bir XmlSchemaValidationException özel durum oluşturulur.

<e3>
  <e2>1</e2>
  <e2>2</e2>
</e3>

Bu sorunu geçici olarak çözmek için XSD belgesindeki öğe bildirimlerini değiştirebilirsiniz. Örnek:

<xs:sequence>
  <xs:element ref="e1" minOccurs="0" maxOccurs="1"/>
  <xs:element name="e2" type="xs:int" minOccurs="0" maxOccurs="1"/>
</xs:sequence>

şu olur:

<xs:sequence>
  <xs:element name="e2" type="xs:int" minOccurs="0" maxOccurs="1"/>
  <xs:element ref="e1" minOccurs="0" maxOccurs="1"/>
</xs:sequence>

İşte aynı sorunun başka bir örneği:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
   <xs:element name="e1" type="xs:string"/>
   <xs:element name="e2" type="xs:string" substitutionGroup="e1"/>

   <xs:complexType name="t3">
      <xs:sequence>
         <xs:element ref="e1" minOccurs="0" maxOccurs="1"/>
         <xs:element name="e2" type="xs:int" minOccurs="0" maxOccurs="1"/>
      </xs:sequence>
   </xs:complexType>
   <xs:element name="e3" type="t3"/>
</xs:schema>

Yukarıdaki şemada aşağıdaki XML'yi doğrulamaya çalışırsanız, doğrulama şu özel durumla başarısız olur: "İşlenmeyen Özel Durum: System.Xml. Schema.XmlSchemaValidationException: 'e2' el öğesi geçersiz - 'abc' değeri veri türüne 'http://www.w3.org/2001/XMLSchema:int' göre geçersiz - 'abc' dizesi geçerli bir Int32 değeri değil."

<e3><e2>abc</e2></e3>

Güvenlik konuları

Ad alanı içindeki System.Xml türler ve üyeler .NET güvenlik sistemine dayanır. Aşağıdaki bölümlerde XML teknolojilerine özgü güvenlik sorunları açıklanmıştır.

Ayrıca, türleri ve üyeleri kullandığınızda System.Xml , XML olası gizlilik etkilerine sahip veriler içeriyorsa, uygulamanızı son kullanıcılarınızın gizliliğine saygılı bir şekilde uygulamanız gerektiğini unutmayın.

Dış erişim

Çeşitli XML teknolojileri, işleme sırasında diğer belgeleri alma özelliğine sahiptir. Örneğin, ayrıştırılan belgede bir belge türü tanımı (DTD) bulunabilir. DTD, ayrıştırılmakta olan belge tarafından başvuruda bulunan bir dış belgede de bulunabilir. XML Şeması tanım dili (XSD) ve XSLT teknolojileri de diğer dosyalardan bilgi ekleme özelliğine sahiptir. Bu dış kaynaklar bazı güvenlik endişeleri sunabilir. Örneğin, uygulamanızın yalnızca güvenilen sitelerden dosya aldığından ve aldığı dosyanın kötü amaçlı veriler içermediğinden emin olmak istersiniz.

XmlUrlResolver sınıfı XML belgelerini yüklemek ve varlıklar, DTD'ler veya şemalar gibi dış kaynakları çözümlemek ve yönergeleri içeri aktarmak veya dahil etmek için kullanılır.

Bu sınıfı geçersiz kılabilir ve kullanılacak nesneyi belirtebilirsiniz XmlResolver . XmlSecureResolver Denetlemediğiniz veya güvenilmeyen bir kaynağı açmanız gerekiyorsa sınıfını kullanın. , XmlSecureResolver bir XmlResolver sarmalar ve temel alınan XmlResolver kaynakların erişimi olan kaynakları kısıtlamanıza olanak tanır.

Hizmet reddi

Sınıflar bu tür saldırılara karşı bir koruma aracı sağladığından aşağıdaki senaryoların hizmet reddi saldırılarına System.Xml karşı daha az savunmasız olduğu kabul edilir.

  • Metin XML verilerini ayrıştırma.

  • İkili XML verileri Microsoft SQL Server tarafından oluşturulduysa, ikili XML verilerini ayrıştırma.

  • Xml belgelerini ve parçalarını veri kaynaklarından dosya sistemine, akışlara, bir TextWriterveya bir StringBuilderöğesine yazma.

  • Bir XmlReader nesne kullanıyorsanız ve XmlReaderSettings.DtdProcessing olarak ayarlıysanız belgeleri Belge Nesne Modeli (DOM) nesnesine DtdProcessing.Prohibityükleme.

  • DOM nesnesine gezinme.

Hizmet reddi saldırılarıyla ilgileniyorsanız veya güvenilmeyen bir ortamda çalışıyorsanız aşağıdaki senaryolar önerilmez.

  • DTD işleme.

  • Şema işleme. Bu, şema koleksiyonuna güvenilmeyen bir şema eklemeyi, güvenilmeyen bir şemayı derlemeyi ve güvenilmeyen bir şema kullanarak doğrulamayı içerir.

  • XSLT işleme.

  • Kullanıcı tarafından sağlanan ikili XML verilerinin rastgele akışını ayrıştırma.

  • Sorgulama, düzenleme, alt ağaçları belgeler arasında taşıma ve DOM nesnelerini kaydetme gibi DOM işlemleri.

Hizmet reddi sorunlarıyla ilgileniyorsanız veya güvenilmeyen kaynaklarla ilgileniyorsanız DTD işlemeyi etkinleştirmeyin. Bu, yöntemin XmlReader.Create oluşturduğu nesnelerde XmlReader varsayılan olarak devre dışı bırakılır.

Not

varsayılan XmlTextReader olarak DTD işlemeye izin verir. XmlTextReader.DtdProcessing Bu özelliği devre dışı bırakmak için özelliğini kullanın.

DTD işlemeyi etkinleştirdiyseniz, öğesinin XmlSecureResolver erişebileceği kaynakları kısıtlamak için sınıfını XmlReader kullanabilirsiniz. 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ırabilirsiniz.

İşlemeyle ilgili dikkat edilmesi gerekenler

XML belgeleri diğer dosyalara başvurular içerebileceğinden, xml belgesini ayrıştırmak için ne kadar işlem gücü gerektiğini belirlemek zordur. Örneğin, XML belgeleri bir DTD içerebilir. DTD iç içe varlıklar veya karmaşık içerik modelleri içeriyorsa, belgeyi ayrıştırmak çok uzun sürebilir.

kullanırken XmlReader, özelliğini ayarlayarak XmlReaderSettings.MaxCharactersInDocument ayrıştırılabilir belgenin boyutunu sınırlayabilirsiniz. özelliğini ayarlayarak XmlReaderSettings.MaxCharactersFromEntities varlıkların genişletilmesinden kaynaklanan karakter sayısını sınırlayabilirsiniz. Bu özellikleri ayarlama örnekleri için uygun başvuru konularına bakın.

XSD ve XSLT teknolojileri, işleme performansını etkileyebilecek ek özelliklere sahiptir. Örneğin, nispeten küçük bir belge üzerinde değerlendirildiğinde işlenmesi için önemli miktarda zaman gerektiren bir XML şeması oluşturmak mümkündür. Bir XSLT stil sayfasına betik blokları eklemek de mümkündür. Her iki durum da uygulamanız için olası bir güvenlik tehdidi oluşturur.

sınıfını XslCompiledTransform kullanan bir uygulama oluştururken aşağıdaki öğelerin ve bunların etkilerini bilmeniz gerekir:

  • XSLT betiği varsayılan olarak devre dışıdır. XSLT betiği yalnızca betik desteğine ihtiyacınız varsa ve tam olarak güvenilen bir ortamda çalışıyorsanız etkinleştirilmelidir.

  • XSLT document() işlevi varsayılan olarak devre dışıdır. İşlevi document() etkinleştirirseniz, yönteme bir XmlSecureResolver nesne XslCompiledTransform.Transform geçirerek erişilebilen kaynakları kısıtlayın.

  • Uzantı nesneleri varsayılan olarak etkindir. Uzantı nesnelerini içeren bir XsltArgumentList nesne yöntemine XslCompiledTransform.Transform geçirilirse, uzantı nesneleri kullanılır.

  • XSLT stil sayfaları, diğer dosyalara ve eklenmiş betik bloklarına başvurular içerebilir. Kötü amaçlı bir kullanıcı, yürütüldüğünde bilgisayarınızın kaynakları yetersiz olana kadar sisteminizin işlemesine neden olabilecek veri veya stil sayfaları sağlayarak bu durumdan yararlanabilir.

  • Karma güven ortamında çalışan XSLT uygulamaları stil sayfası sahtekarlığına neden olabilir. Örneğin, kötü amaçlı bir kullanıcı zararlı stil sayfası içeren bir nesneyi yükleyebilir ve daha sonra yöntemini çağıran XslCompiledTransform.Transform ve dönüştürmeyi yürüten başka bir kullanıcıya verebilir.

Bu güvenlik sorunları, stil sayfası güvenilir bir kaynaktan gelmediği sürece ve document() güvenilmeyen bir kaynaktan nesneler, XSLT stil sayfaları veya XML kaynak verileri kabul XslCompiledTransform edilmediği sürece betik veya işlev etkinleştirilmeyerek azaltılabilir.

Özel durum işleme

Alt düzey bileşenler tarafından oluşan özel durumlar, uygulamaya açıklanmasını istemediğiniz yol bilgilerini açıklayabilir. Uygulamalarınız özel durumları yakalamalı ve uygun şekilde işlemelidir.

Ayrıca bkz.