XmlUrlResolver Sınıf
Tanım
Ö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.
Tekdüzen Kaynak Tanımlayıcısı (URI) tarafından adlandırılan dış XML kaynaklarını çözümler.
public ref class XmlUrlResolver : System::Xml::XmlResolver
public class XmlUrlResolver : System.Xml.XmlResolver
type XmlUrlResolver = class
inherit XmlResolver
Public Class XmlUrlResolver
Inherits XmlResolver
- Devralma
Örnekler
Aşağıdaki örnek, varsayılan kimlik bilgileriyle kullanan bir XmlReader XmlUrlResolver oluşturur.
// 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);
' Create an XmlUrlResolver with default credentials.
Dim resolver As New XmlUrlResolver()
resolver.Credentials = CredentialCache.DefaultCredentials
' Create the reader.
Dim settings As New XmlReaderSettings()
settings.XmlResolver = resolver
Dim reader As XmlReader = _
XmlReader.Create("http://serverName/data/books.xml", settings)
Açıklamalar
XmlUrlResolver varlıklar, belge türü tanımları (DTD) 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 ad alanında System.Xml tüm sınıflar için varsayılan çözümleyicidir. sınıfından file://
ve http://
protokollerini ve isteklerini WebRequest destekler.
Önemli
XmlUrlResolver nesneleri, kullanıcı kimlik bilgileri gibi hassas bilgiler içerebilir. Nesneleri önbelleğe XmlUrlResolver alırken dikkatli olmanız ve nesneleri güvenilmeyen bir bileşene geçirmemelisiniz XmlUrlResolver .
DTD'leri Çözümleme
XML okuyucusu (XmlReader) dış DTD içeren bir XML dosyasını okuyorsa, DTD'nin akış gösterimini almak için yöntemini çağırır XmlUrlResolver.GetEntityAsync . DTD'nin URI'si göreli bir URI ise, XML okuyucu yöntemini çağırır XmlUrlResolver.ResolveUri ve verilen relativeUri
ve baseURi
parametreler için mutlak bir URI döndürür. URI'nin XmlUrlResolver nasıl çözümleneceğini bilmiyorsa döndürür null
.
yöntemi, XmlUrlResolver.GetEntity kaynağa erişim kazanmak için özelliğindeki Credentials bilgileri uygun şekilde kullanır. Güvenlik nedeniyle bu özelliğe erişimci yoktur get
. üzerine yazılırken XmlResolverGetEntity, 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ıyı müzakere eder ve içeriğin bir Stream gösterimini döndürür. çağrısını XmlResolver yapan nesnesi akışı yorumlar.
XmlUrlResolver sınıfını genişletme
sınıfının varsayılan davranışı XmlUrlResolver , 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ımları, güncel içerik gereksinimine karşı değerlendirilmelidir.
Aşağıdaki örnek, XmlCachingResolver
önbellekten kaynak almak için yeni bir sınıfını genişletir XmlUrlResolver ve oluşturur. Bu, özelliği ve XmlUrlResolver.GetEntity yöntemi geçersiz kılınarak XmlUrlResolver.Credentials yapılır.
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);
}
}
}
Class XmlCachingResolver
Inherits XmlUrlResolver
Dim enableHttpCaching As Boolean
Public Shadows Credentials As ICredentials
'resolve resources from cache (if possible) when enableHttpCaching is set to true
'resolve resources from source when enableHttpcaching is set to false
Public Sub New(ByVal enableHttpCaching As Boolean)
Me.enableHttpCaching = enableHttpCaching
End Sub
Public Shadows Function GetEntity(ByVal absoluteUri As Uri, ByVal role As String, ByVal returnType As Type) As Object
If absoluteUri = Nothing Then
Throw New ArgumentNullException("absoluteUri")
End If
'resolve resources from cache (if possible)
If absoluteUri.Scheme = "http" And enableHttpCaching And (returnType Is GetType(Nullable) Or returnType Is GetType(Stream)) Then
Dim webReq As WebRequest = WebRequest.Create(absoluteUri)
webReq.CachePolicy = New HttpRequestCachePolicy(HttpRequestCacheLevel.Default)
If Not (Credentials Is Nothing) Then
webReq.Credentials = Credentials
End If
Dim resp As WebResponse = webReq.GetResponse()
Return resp.GetResponseStream()
'otherwise use the default behavior of the XmlUrlResolver class (resolve resources from source)
Else
Return MyBase.GetEntity(absoluteUri, role, returnType)
End If
End Function
End Class
sınıfının önbelleğe alma davranışı XmlCachingResolver
yönteminde GetEntity
uygulanır. Bu, yeni WebRequest ve HttpRequestCachePolicy nesneleri oluşturularak yapılır. HttpRequestCachePolicy nesnesi, numaralandırmanın Default HttpRequestCacheLevel üyesi kullanılarak oluşturulur.
CachePolicy nesnesinin WebRequest özelliği nesnesiyle birlikte HttpRequestCachePolicy ayarlanır.
sınıfının bir örneği XmlCachingResolver
ile Boolean
enableHttpCaching
oluşturulur. Bu değer olarak ayarlandığında true
, örnek mümkünse varsayılan önbellekten bir kaynağı çözümler. enableHttpCaching
olarak ayarlandığındafalse
, örnek varsayılan davranışı kullanır ve kaynaklarından kaynakları çözümler.
Not
Bu örnek, .NET Framework XML sınıflarının genişletilebilirliğini 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 nesne 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 nesne için ağ ara sunucusunu 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) |
Gerçek kaynağı içeren bir nesneye URI Haritalar. |
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 nesneyle eşler. (Devralındığı yer: XmlResolver) |
GetHashCode() |
Varsayılan karma işlevi işlevi görür. (Devralındığı yer: Object) |
GetType() |
Type Geçerli örneğini alır. (Devralındığı yer: Object) |
MemberwiseClone() |
Geçerli Objectöğesinin sığ 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 dışında Streamtürler döndürmesini sağlar. (Devralındığı yer: XmlResolver) |
ToString() |
Geçerli nesneyi temsil eden dizeyi döndürür. (Devralındığı yer: Object) |