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'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 |
|
| 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 |
| 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 |
| 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 |
|
| XmlNodeChangedEventHandler |
, , NodeChanging, NodeRemovedNodeInsertedNodeInsertingve NodeRemoving olaylarını NodeChangedişleyen yöntemi temsil eder. |
Açıklamalar
Desteklenen standartlar
Ad System.Xml alanı şu standartları destekler:
- DTD desteği de dahil olmak üzere XML 1.0
- Hem akış düzeyinde hem de DOM'da XML ad alanları
- XML şemaları
- XPath ifadeleri
- XSLT dönüştürmeleri
- DOM Düzey 1 Çekirdeği
- DOM Düzey 2 Çekirdek
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ı
awaitunutabilir 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ı
trueolarak ayarlamayınXmlReaderSettings.Async.Zaman uyumsuz bir yöntem çağırdığınızda anahtar sözcüğünü
awaitbelirtmeyi 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.