System.Xml Ad Alanı
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
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 |
|
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 |
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 |
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 |
|
XmlNodeChangedEventHandler |
, , NodeChanging, NodeRemovedNodeInsertedNodeInsertingve NodeRemoving olaylarını NodeChangedişleyen yöntemi temsil eder. |
Açıklamalar
Desteklenen standartlar
Ad System.Xml alanı şu standartları destekler:
Hem akış düzeyinde hem de DOM'da XML ad alanları
XML sınıflarının W3C önerilerinden farklı olduğu iki durum için W3C belirtimlerinden farklar bölümüne bakın.
İlgili ad alanları
.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 t1
t2
öğesiyle e2
sonuçlanabilir. İkinci durum, biri türünde, diğeri türünde t2
olmak üzere iki e2
öğeden oluşan xs:int
bir 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. İşlevidocument()
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.