XmlResolver Sınıf

Tanım

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

public ref class XmlResolver abstract
public abstract class XmlResolver
type XmlResolver = class
Public MustInherit Class XmlResolver
Devralma
XmlResolver
Türetilmiş

Örnekler

Aşağıdaki örnek, varsayılan kimlik bilgileriyle bir XmlUrlResolver oluşturur. , XmlReader sonuçta elde edilen veri akışını okumak ve görüntülemek için kullanılır.

using System;
using System.Xml;
using System.IO;

class Example
{
    static void Main()
    {
        // Create an XmlUrlResolver with default credentials.
        XmlUrlResolver resolver = new XmlUrlResolver();
        resolver.Credentials = System.Net.CredentialCache.DefaultCredentials;

        // Point the resolver at the desired resource and resolve as a stream.
        Uri baseUri = new Uri("http://serverName/");
        Uri fulluri = resolver.ResolveUri(baseUri, "fileName.xml");
        Stream s = (Stream)resolver.GetEntity(fulluri, null, typeof(Stream));

        // Create the reader with the resolved stream and display the data.
        XmlReader reader = XmlReader.Create(s);
        while (reader.Read())
        {
            Console.WriteLine(reader.ReadOuterXml());
        }
    }
}
Imports System.Xml
Imports System.IO

Module Module1

    Sub Main()
        ' Create an XmlUrlResolver with default credentials.
        Dim resolver As New XmlUrlResolver()
        resolver.Credentials = System.Net.CredentialCache.DefaultCredentials

        ' Point the resolver at the desired resource and resolve as a stream.
        Dim baseUri As New Uri("http://serverName/")
        Dim fulluri As Uri = resolver.ResolveUri(baseUri, "fileName.xml")
        Dim s As Stream = CType(resolver.GetEntity(fulluri, Nothing, GetType(Stream)), Stream)

        ' Create the reader with the resolved stream and display the data.
        Dim reader As XmlReader = XmlReader.Create(s)
        While reader.Read()
            Console.WriteLine(reader.ReadOuterXml())
        End While
    End Sub
End Module

Açıklamalar

Tür XmlResolver , varlıklar, belge türü tanımları (DTD'ler) veya şemalar gibi dış XML kaynaklarını çözümlemek için kullanılır. Genişletilebilir Stil Sayfası Dili (XSL) stil sayfalarında veya XML Şeması tanım dili (XSD) şemalarında bulunan öğeleri dahil etmek ve içeri aktarmak için de kullanılır.

XmlResolver güvenlik kimlik bilgilerini işleme, veri kaynağı bağlantısını açma ve kaynağı bir akış veya başka bir nesne türü biçiminde döndürme dahil olmak üzere, kaynaklara bağlantı konusunda anlaşma sağlamanın tüm yönlerini ele alır. Çağıran XmlResolver nesne, akışı yorumlama görevine sahiptir.

System.Xml Ad alanı, sınıfının aşağıdaki somut uygulamasını XmlResolver içerir:

  • XmlUrlResolver , ad alanı içindeki System.Xml tüm sınıflar için varsayılan çözümleyicidir. file:// ve http:// protokollerini ve System.Net.WebRequest sınıfından gelen istekleri destekler. Performansı geliştirmek için sınıfı genişletme örnekleri için başvuru sayfasına bakın XmlUrlResolver .

Kendi çözümleyicinizi oluşturabilir ve belirtebilirsiniz. Çözümleyici belirtmezseniz, okuyucu kullanıcı kimlik bilgileri olmadan varsayılanı XmlUrlResolver kullanır.

XmlResolver kullanacağınızı, XmlReaderSettings.XmlResolver özelliğini ayarlayarak ve XmlReaderSettings nesnesini Create yöntemine geçirerek belirtirsiniz.

Kaynak kimlik doğrulaması gerektiren bir sistemde depolanıyorsa, gerekli kimlik bilgilerini belirtmek için özelliğini kullanırsınız XmlResolver.Credentials .

Kimlik doğrulama bilgilerini sağlama

Okunacak XML verilerini içeren dosyanın kısıtlı erişim ilkesi olabilir. Bir ağ kaynağına erişmek için kimlik doğrulaması gerekiyorsa, gerekli kimlik bilgilerini belirtmek için özelliğini kullanın Credentials . Credentials Özellik ayarlanmadıysa, kimlik bilgileri olarak nullayarlanır.

Örneğin, kimlik doğrulaması amacıyla web'den veri isteğinde bulunurken kimlik bilgilerinin gerekli olduğunu varsayalım. Web sanal dizini anonim erişime izin vermediği sürece, özelliğini kimlik bilgilerini sağlayacak şekilde ayarlamanız Credentials gerekir. Aşağıdaki örnek, varsayılan kimlik bilgilerini kullanarak XmlReader sitesine erişen bir XmlUrlResolver nesnesi oluşturur.

// Create a resolver with default credentials.
XmlUrlResolver resolver = new XmlUrlResolver();
resolver.Credentials = System.Net.CredentialCache.DefaultCredentials;

// Set the reader settings object to use the resolver.
settings.XmlResolver = resolver;

// Create the XmlReader object.
XmlReader reader = XmlReader.Create("http://ServerName/data/books.xml", settings);
' Create a resolver with default credentials.
Dim resolver as XmlUrlResolver = new XmlUrlResolver()
resolver.Credentials = System.Net.CredentialCache.DefaultCredentials

' Set the reader settings object to use the resolver.
settings.XmlResolver = resolver

' Create the XmlReader object.
Dim reader as XmlReader = XmlReader.Create("http://ServerName/data/books.xml", settings)

Farklı URI'ler için farklı kimlik bilgileri sağlayabilir ve bunları önbelleğe ekleyebilirsiniz. Bu kimlik bilgileri, XML'nin özgün kaynağından bağımsız olarak farklı URI'ler için kimlik doğrulamasını denetlemek için kullanılır. Aşağıdaki örnekte önbelleğe kimlik bilgilerinin nasıl ekleneceği gösterilmektedir.

// Create the credentials.
NetworkCredential myCred = new NetworkCredential(UserName,SecurelyStoredPassword,Domain);
CredentialCache myCache = new CredentialCache();
myCache.Add(new Uri("http://www.contoso.com/"), "Basic", myCred);
myCache.Add(new Uri("http://app.contoso.com/"), "Basic", myCred);

// Set the credentials on the XmlUrlResolver object.
XmlUrlResolver resolver = new XmlUrlResolver();
resolver.Credentials = myCache;

// Compile the style sheet.
XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load("http://serverName/data/xsl/order.xsl",XsltSettings.Default, resolver);
' Create the credentials.
Dim myCred As NetworkCredential = New NetworkCredential(UserName,SecurelyStoredPassword,Domain)
Dim myCache As CredentialCache = New CredentialCache()
myCache.Add(new Uri("http://www.contoso.com/"), "Basic", myCred)
myCache.Add(new Uri("http://app.contoso.com/"), "Basic", myCred)

' Set the credentials on the XmlUrlResolver object.
Dim resolver As XmlUrlResolver = New XmlUrlResolver()
resolver.Credentials = myCache

' Compile the style sheet.
Dim xslt As XslCompiledTransform = New XslCompiledTransform()
xslt.Load("http://serverName/data/xsl/order.xsl", XsltSettings.Default, resolver)

Güvenlik konuları

sınıfıyla XmlResolver çalışırken aşağıdaki öğeleri göz önünde bulundurun.

  • XmlResolver nesneleri, kullanıcı kimlik bilgileri gibi hassas bilgiler içerebilir. XmlResolver nesneleri önbelleğe alırken dikkatli olmalı ve XmlResolver nesneyi güvenilmeyen bir bileşene geçirmemelisiniz.

  • sınıfını kullanan XmlResolver bir sınıf özelliği tasarlarsanız, özelliği salt yazma özelliği olarak tanımlanmalıdır. Özellik, kullanılacak XmlResolver öğesini belirtmek için kullanılabilir, ancak XmlResolver nesnesini döndürmek için kullanılamaz.

  • Uygulamanız güvenilmeyen koddan gelen XmlResolver nesnelerini kabul ediyorsa, yöntem GetEntity ile geçirilen URI'nin, yöntem ResolveUri ile döndürülenle aynı olacağını varsayamazsınız. sınıfından XmlResolver türetilen sınıflar yöntemini geçersiz kılabilir GetEntity ve özgün URI'de bulunandan farklı veriler döndürebilir.

  • Uygulamanız, okunan bayt sayısını sınırlayan bir GetEntity uygulayarak yönteme IStream yönelik hizmet tehditlerinin bellek reddini azaltabilir. Bu, kötü niyetli kodun GetEntity yöntemine sonsuz sayıda bayt akışı göndermeye çalıştığı durumlara karşı korunmaya yardımcı olur.

Oluşturucular

Name Description
XmlResolver()

XmlResolver sınıfının yeni bir örneğini başlatır.

Özellikler

Name Description
Credentials

Türetilmiş bir sınıfta geçersiz kılındığında, web isteklerinin kimliğini doğrulamak için kullanılan kimlik bilgilerini ayarlar.

FileSystemResolver

Yalnızca dosya sistemi URI'lerini çözümleyen bir XML çözümleyicisi alır.

ThrowingResolver

Varlık çözümlemesini yasaklayan bir XML çözümleyicisi alır.

Yöntemler

Name Description
Equals(Object)

Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler.

(Devralındığı yer: Object)
GetEntity(Uri, String, Type)

Türetilmiş bir sınıfta geçersiz kılındığında, bir URI'yi gerçek kaynağı içeren bir nesneyle eşler.

GetEntityAsync(Uri, String, Type)

Bir URI'yi zaman uyumsuz olarak gerçek kaynağı içeren bir nesneye eşler.

GetHashCode()

Varsayılan karma işlevi işlevi görür.

(Devralındığı yer: Object)
GetType()

Geçerli örneğin Type alır.

(Devralındığı yer: Object)
MemberwiseClone()

Geçerli Objectbasit bir kopyasını oluşturur.

(Devralındığı yer: Object)
ResolveUri(Uri, String)

Türetilmiş bir sınıfta geçersiz kılındığında, temel ve göreli URI'lerden mutlak URI'yi çözümler.

SupportsType(Uri, Type)

Çözümleyicinin dışında Streamtürler döndürmesini sağlar.

ToString()

Geçerli nesneyi temsil eden bir dize döndürür.

(Devralındığı yer: Object)

Şunlara uygulanır

Ayrıca bkz.