İngilizce dilinde oku

Aracılığıyla paylaş


XmlUrlResolver Sınıf

Tanım

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

C#
public class XmlUrlResolver : System.Xml.XmlResolver
Devralma
XmlUrlResolver

Örnekler

Aşağıdaki örnek, varsayılan kimlik bilgilerine sahip bir XmlUrlResolver kullanan bir XmlReader oluşturur.

C#

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

// Create the reader.
XmlReaderSettings settings = new XmlReaderSettings();
settings.XmlResolver = resolver;
XmlReader reader =
     XmlReader.Create("http://serverName/data/books.xml", settings);

Açıklamalar

XmlUrlResolver 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.

XmlUrlResolver, System.Xml ad alanında tüm sınıflar için varsayılan çözümleyicidir. WebRequest sınıfından file:// ve http:// protokollerini ve isteklerini destekler.

Önemli

XmlUrlResolver nesneler, kullanıcı kimlik bilgileri gibi hassas bilgiler içerebilir. XmlUrlResolver nesneleri önbelleğe alırken dikkatli olmanız ve XmlUrlResolver nesneleri güvenilmeyen bir bileşene geçirmemelisiniz.

DTD'leri Çözümleme

Bir XML okuyucusu (XmlReader) dış DTD içeren bir XML dosyasını okuyorsa, DTD'nin akış gösterimini almak için XmlUrlResolver.GetEntityAsync yöntemini çağırır. DTD'nin URI'si göreli bir URI ise, XML okuyucusu XmlUrlResolver.ResolveUri yöntemini çağırır ve verilen relativeUri ve baseURi parametreleri için mutlak bir URI döndürür. XmlUrlResolver URI'nin nasıl çözümleneceğini bilmiyorsa nulldöndürür.

XmlUrlResolver.GetEntity yöntemi, kaynağa erişim kazanmak için Credentials özelliğindeki bilgileri uygun şekilde kullanır. Güvenlik nedeniyle bu özelliğin get erişimcisi yoktur. XmlResolverüzerine yazılırken GetEntity, Credentials özelliğindeki kimlik bilgisi bilgilerini kullanan yöntemdir.

Diğer tüm XML kaynaklarını çözümlemek, DTD'leri çözümlemeye çok benzer. XmlResolver dış kaynakla bağlantı oluşturur ve içeriğin Stream bir gösterimini döndürür. XmlResolver çağrısı yapan nesne akışı yorumlar.

XmlUrlResolver sınıfını genişletme

XmlUrlResolver sınıfının varsayılan davranışı, bir XML veri kaynağını önbellekten değil kaynağından çözümlemektir. Bazı durumlarda, bir veri kaynağını önbellekten çözümlemek, veri kaynağının sunucusuna bir gezi kaydederek uygulamanın performansını artırabilir. Buradaki performans kazançları, up-totarih içeriğine olan ihtiyaçlara karşı tartılmalıdır.

Aşağıdaki örnek, önbellekten kaynak almak için XmlUrlResolver genişletir ve XmlCachingResolveryeni bir sınıf oluşturur. Bu, XmlUrlResolver.Credentials özelliği ve XmlUrlResolver.GetEntity yöntemi geçersiz kılınarak yapılır.

C#
class XmlCachingResolver : XmlUrlResolver
{
    bool enableHttpCaching;
    ICredentials credentials;

    //resolve resources from cache (if possible) when enableHttpCaching is set to true
    //resolve resources from source when enableHttpcaching is set to false
    public XmlCachingResolver(bool enableHttpCaching)
    {
        this.enableHttpCaching = enableHttpCaching;
    }

    public override ICredentials Credentials
    {
        set
        {
            credentials = value;
            base.Credentials = value;
        }
    }

    public override object GetEntity(Uri absoluteUri, string role, Type ofObjectToReturn)
    {
        if (absoluteUri == null)
        {
            throw new ArgumentNullException("absoluteUri");
        }
        //resolve resources from cache (if possible)
        if (absoluteUri.Scheme == "http" && enableHttpCaching && (ofObjectToReturn == null || ofObjectToReturn == typeof(Stream)))
        {
            WebRequest webReq = WebRequest.Create(absoluteUri);
            webReq.CachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.Default);
            if (credentials != null)
            {
                webReq.Credentials = credentials;
            }
            WebResponse resp = webReq.GetResponse();
            return resp.GetResponseStream();
        }
        //otherwise use the default behavior of the XmlUrlResolver class (resolve resources from source)
        else
        {
            return base.GetEntity(absoluteUri, role, ofObjectToReturn);
        }
    }
}

XmlCachingResolver sınıfının önbelleğe alma davranışı GetEntity yönteminde uygulanır. Bu, yeni WebRequest ve HttpRequestCachePolicy nesneleri oluşturularak yapılır. HttpRequestCachePolicy nesnesi, HttpRequestCacheLevel numaralandırmasının Default üyesi kullanılarak oluşturulur.

WebRequest nesnesinin CachePolicy özelliği HttpRequestCachePolicy nesnesiyle ayarlanır.

XmlCachingResolver sınıfının bir örneği BooleanenableHttpCachingile oluşturulur. Bu değer trueolarak ayarlandığında, örnek mümkünse varsayılan önbellekten bir kaynağı çözümler. enableHttpCaching falseolarak ayarlandığında, örnek varsayılan davranışı kullanır ve kaynaklarından kaynakları çözümler.

Not

Bu örnek, .NET Framework'teki XML sınıflarının genişletilebilirliklerinden yararlanıyor. Diğer sınıflar, belirli bir uygulamanın gereksinimlerine uyacak şekilde genişletilebilir ve özelleştirilebilir.

Oluşturucular

XmlUrlResolver()

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

Özellikler

CachePolicy

Temel alınan WebRequest nesnesi için önbellek ilkesini alır veya ayarlar.

Credentials

Web isteklerinin kimliğini doğrulamak için kullanılan kimlik bilgilerini ayarlar.

Proxy

Temel alınan WebRequest nesnesi için ağ proxy'sini alır veya ayarlar.

Yöntemler

Equals(Object)

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

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

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.

GetEntityAsync(Uri, String, Type)

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

(Devralındığı yer: XmlResolver)
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)

Temel ve göreli URI'lerden mutlak URI'yi çözümler.

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.

(Devralındığı yer: XmlResolver)
SupportsType(Uri, Type)

Çözümleyicinin Streamdışındaki türleri döndürmesini sağlar.

(Devralındığı yer: XmlResolver)
ToString()

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

(Devralındığı yer: Object)

Şunlara uygulanır

Ürün Sürümler
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

Ayrıca bkz.

  • XML Belgeleri ve Veri