Aracılığıyla paylaş


System.Xml Ad Alanı

XML'nin işlenmesi için standartlara dayalı destek sağlar.

Sınıflar

Name Description
NameTable

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

UniqueId

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

XmlAttribute

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

XmlAttributeCollection

Ad veya dizinle erişilebilen öznitelik koleksiyonunu temsil eder.

XmlBinaryReaderSession

İyileştirilmiş dizelerin dinamik bir şekilde yönetilmesini sağlar.

XmlBinaryWriterSession

İletide görünen ortak dizeleri sıkıştırmak ve durumu korumak için dinamik sözlük kullanılmasını sağlar.

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 ve çözer ve ortak dil çalışma zamanı türleri ile XML Şema tanım 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 manipüle edilmesine izin verir.

XmlDeclaration

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

XmlDictionary

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

XmlDictionaryReader

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

XmlDictionaryReaderQuotas

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

XmlDictionaryString

içinde depolanan bir XmlDictionarygirdiyi temsil eder.

XmlDictionaryWriter

Windows Communication Foundation'ın (WCF) serileştirme ve seri durumdan XmlWriter çıkarma yapmak için türettiği 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

Düğümü bu düğümün hemen öncesinde veya sonrasında alır.

XmlNamedNodeMap

Ad veya dizin tarafından 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

Atomize dize nesnelerinin tablosu.

XmlNode

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

XmlNodeChangedEventArgs

, , NodeChanging, NodeInsertedNodeInsertingve NodeRemovedNodeRemoving 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 okuyucuları XmlNodetemsil eder.

XmlNotation

Gibi bir gösterimi bildirimini <temsil eder! NOTATION... >.

XmlParserContext

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

XmlProcessingInstruction

XML'nin işlemciye özgü bilgileri belge metninde tutmayı tanımladığı bir işleme yönergesini temsil eder.

XmlQualifiedName

XML nitelenmiş adını temsil eder.

XmlReader

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

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ın XmlResolver erişimi olan kaynakları kısıtlayarak uygulamasının başka bir uygulamasının XmlResolver güvenliğini sağlamayı sağlar.

XmlSignificantWhitespace

Karma içerik düğümündeki işaretleme ile xml:space= 'preserve' kapsamındaki boşluk arasındaki boşluğu temsil eder. Buna önemli boşluklar da denir.

XmlText

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

XmlTextReader

XML verilerine hızlı, önbelleğe alınmamış, yalnızca iletme erişimi sağlayan bir okuyucudur.

Bunun yerine 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 ileriye doğru bir yolunu sağlayan bir yazıcıyı temsil eder.

Bunun yerine 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 kullanımdan kaldırıldı. Doğrulama XML okuyucusu XmlReaderSettings oluşturmak için sınıfını Create ve yöntemini kullanmanızı öneririz.

XmlWhitespace

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

XmlWriter

XML verileri içeren akışlar veya dosyalar oluşturmak için hızlı, önbelleğe alınmamış, yalnızca iletme yolu sağlayan bir 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

Name Description
IApplicationResourceStreamResolver

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

IFragmentCapableXmlDictionaryWriter

bir XmlDictionaryWritertarafından uygulandığında XML parçalarının işlenmesine izin veren özellikleri ve yöntemleri 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 okuyucu yeniden başlatma yöntemleri sağlar.

IXmlBinaryWriterInitializer

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

IXmlDictionary

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

IXmlLineInfo

Bir sınıfın satır ve konum bilgilerini döndürmesini sağlayan 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ı sağlar.

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

Name Description
ConformanceLevel

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

DtdProcessing

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

EntityHandling

XmlTextReader veya XmlValidatingReader varlıkları nasıl işlediğini belirtir.

Formatting

XmlTextWriteriçin biçimlendirme seçeneklerini belirtir.

NamespaceHandling

XmlWriteryinelenen ad alanı bildirimlerinin kaldırılıp kaldırılmayacağını belirtir.

NewLineHandling

Satır sonlarının nasıl işleneceğini belirtir.

ReadState

Okuyucunun durumunu belirtir.

ValidationType

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

WhitespaceHandling

Boşluğun nasıl işleneceğini belirtir.

WriteState

XmlWriterdurumunu belirtir.

XmlDateTimeSerializationMode

dize ile DateTimearasında dönüştürme yaparken zaman değerinin nasıl ele alınıp alın giteceini 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

XmlWriter çıktısını seri hale getirmek için kullanılan yöntemi belirtir.

XmlSpace

Geçerli xml:space kapsamını belirtir.

XmlTokenizedType

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

Temsilciler

Name Description
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.

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ı önermeyiz çü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öntem çağırdığınızda anahtar sözcüğünü await belirtmeyi unutursanız, sonuçlar belirlenimci değildir: Beklediğiniz sonucu veya özel durumu alabilirsiniz.

  • XmlReader Bir nesne büyük bir metin düğümünü okurken, yalnızca kısmi bir metin değerini önbelleğe alabilir ve metin düğümünü döndürebilir, bu nedenle özelliğin XmlReader.Value alınması G/Ç işlemiyle 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 sahip ancak aynı içerik modelinde farklı türlerde olan öğeleri içerir ve değiştirme grupları kullanılır. Bu bir 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 t1 öğesiyle e2t2sonuç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 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 değiştirme grubu öğesiyle aynı adı alır.

Örneğin, içerik modelinin altındaki şemada belirsizdir ve derleme hatasına neden olmalıdır, ancak System.Xml şemayı hatasız bir şekilde 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. Örneğin:

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

şu hale gelir:

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

Aynı sorunun başka bir örneği aşağıda verilmişti:

<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'de olası gizlilik etkileri olan veriler varsa 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 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 içeri aktarma veya ekleme yönergelerini çözümlemek 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ınanların XmlResolver 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.

  • Veri kaynaklarından dosya sistemine, akışlara, bir TextWriterveya bir StringBuilderöğesine XML belgeleri ve parçaları yazma.

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

  • DOM nesnesinde gezinme.

Hizmet reddi saldırılarından endişe ediyorsanı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 oluşturduğu nesnelerde XmlReaderXmlReader.Create varsayılan olarak devre dışı bırakılır.

Uyarı

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, sınıfının erişebileceği kaynakları kısıtlamak için sınıfını XmlReader kullanabilirsinizXmlSecureResolver. 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 aşırı zaman alabilir.

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. Betik bloklarını bir XSLT stil sayfasına 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 etkilerinin farkında olmanız gerekir:

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

  • XSLT document() işlevi varsayılan olarak devre dışıdır. document() işlevini etkinleştirirseniz, erişilebilen kaynakları kısıtlamak için bir XmlSecureResolver nesnesini XslCompiledTransform.Transform yöntemine geçirin.

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

  • XSLT stil sayfaları, diğer dosyalara ve ekli 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ı kimlik sahtekarlığına neden olabilir. Örneğin, kötü niyetli bir kullanıcı zararlı bir stil sayfası ile bir nesne yükleyebilir ve bunu başka bir kullanıcıya verir; bu kullanıcı daha sonra XslCompiledTransform.Transform yöntemini çağırarak dönüşümü gerçekleştirir.

Bu güvenlik sorunları, stil sayfası güvenilir bir kaynaktan gelmedikçe betik oluşturma veya işlevi etkinleştirmeyerek ve güvenilmeyen bir kaynaktan nesneler, XSLT stil sayfaları veya XML kaynak verileri kabul etmeyerek giderilebilir.

Hata yönetimi

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.