XmlUrlResolver XmlUrlResolver XmlUrlResolver XmlUrlResolver Class

Definition

Löst externe XML-Ressourcen auf, die durch einen URI (Uniform Resource Identifier) benannt werden.Resolves external XML resources named by a Uniform Resource Identifier (URI).

public ref class XmlUrlResolver : System::Xml::XmlResolver
public class XmlUrlResolver : System.Xml.XmlResolver
type XmlUrlResolver = class
    inherit XmlResolver
Public Class XmlUrlResolver
Inherits XmlResolver
Vererbung
XmlUrlResolverXmlUrlResolverXmlUrlResolverXmlUrlResolver

Beispiele

Das folgende Beispiel erstellt eine XmlReader , verwendet eine XmlUrlResolver mit Standardanmeldeinformationen.The following example creates an XmlReader that uses an XmlUrlResolver with default credentials.


// 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)

Hinweise

XmlUrlResolver Dient zum Auflösen von externer XML-Ressourcen wie z. B. Entitäten, Dokumenttypdefinitionen (DTDs) oder Schemas.XmlUrlResolver is used to resolve external XML resources such as entities, document type definitions (DTDs) or schemas. Es wird auch verwendet, um Prozess Include- und Importelementen, die in Extensible StyleSheet Language (XSL)-Stylesheets oder Schemas für XML Schema Definition Language (XSD) zu finden.It is also used to process include and import elements found in Extensible StyleSheet Language (XSL) style sheets or XML Schema definition language (XSD) schemas.

XmlUrlResolver ist der Standardresolver für alle Klassen in der System.Xml Namespace.XmlUrlResolver is the default resolver for all classes in the System.Xml namespace. Sie unterstützt das file://-Protokoll und das http://-Protokoll und Anforderungen von der WebRequest-Klasse.It supports the file:// and http:// protocols and requests from the WebRequest class.

Wichtig

XmlUrlResolver-Objekte können vertrauliche Informationen (z. B. Anmeldeinformationen des Benutzers) enthalten.XmlUrlResolver objects can contain sensitive information such as user credentials. Sie sollten vorsichtig sein, wenn Sie zwischenspeichern XmlUrlResolver Objekte aus, und übergeben Sie XmlUrlResolver Objekte an eine nicht vertrauenswürdige Komponente.You should be careful when you cache XmlUrlResolver objects and should not pass XmlUrlResolver objects to an untrusted component.

Auflösen von DTDsResolving DTDs

Wenn ein XML-Reader (XmlReader) ist eine XML-Datei mit einer externen DTD lesen, ruft es die XmlUrlResolver.GetEntityAsync Methode, um eine Streamdarstellung der DTD abzurufen.If an XML reader (XmlReader) is reading an XML file that contains an external DTD, it calls the XmlUrlResolver.GetEntityAsync method to get a stream representation of the DTD. Wenn der URI der DTD ein relativer URI ist, ruft der XML-Reader der XmlUrlResolver.ResolveUri Methode und gibt einen absoluten URI für die angegebenen relativeUri und baseURi Parameter.If the URI of the DTD is a relative URI, the XML reader calls the XmlUrlResolver.ResolveUri method and returns an absolute URI for the given relativeUri and baseURi parameters. Wenn die XmlUrlResolver nicht weiß, wie zum Auflösen des URIS gibt null.If the XmlUrlResolver doesn't know how to resolve the URI, it returns null.

Die XmlUrlResolver.GetEntity-Methode verwendet die Informationen in der Credentials-Eigenschaft, um Zugriff auf die Ressource zu erhalten.The XmlUrlResolver.GetEntity method uses the information in the Credentials property as appropriate to gain access to the resource. Aus Sicherheitsgründen gibt es für diese Eigenschaft keine get-Zugriffsmethode.There is no get accessor to this property for security reasons. Beim Überschreiben XmlResolver, GetEntity ist die Methode, die die Anmeldeinformationen in der Anmeldeinformationen Eigenschaft.When overwriting XmlResolver, GetEntity is the method that utilizes the credential information in the Credentials property.

Das Auflösen aller anderen XML-Ressourcen entspricht weitgehend dem Auflösen von DTDs.Resolving all other XML resources is very similar to resolving DTDs. XmlResolver die Verbindung mit der externen Ressource ausgehandelt, und gibt eine Stream Darstellung des Inhalts.XmlResolver negotiates the connection with the external resource and returns a Stream representation of the content. Das Objekt, das den Aufruf stammt XmlResolver interpretiert den Datenstrom.The object that is making the call to XmlResolver interprets the stream.

Erweitern der "XmlUrlResolver"-KlasseExtending the XmlUrlResolver class

Standardmäßig verhält sich die XmlUrlResolver-Klasse eigentlich so, dass sie XML-Datenressourcen aus ihrer Quelle und nicht aus dem Cache auflöst.The default behavior of the XmlUrlResolver class is to resolve an XML data resource from its source, not from cache. In einigen Fällen kann die Auflösung einer Datenressource aus dem Cache zur Beschleunigung der Arbeitsgeschwindigkeit beitragen, da damit der Weg zum Server der Datenressource erspart bleibt.In some cases, resolving a data resource from cache can improve the performance of an application by saving a trip to the data resource's server. Die auf diese Weise erzielbaren Leistungsgewinne müssen gegen die Erfordernis abgewogen werden, ständig für aktuellen Inhalt zu sorgen.The performance gains here must be weighed against the need for up-to-date content.

Das folgende Beispiel erweitert XmlUrlResolver und erstellt eine neue Klasse XmlCachingResolver, um Ressourcen aus dem Cache abzurufen.The following example extends XmlUrlResolver and builds a new class, XmlCachingResolver, to retrieve resources from the cache. Dazu werden die XmlUrlResolver.Credentials-Eigenschaft und die XmlUrlResolver.GetEntity-Methode außer Kraft gesetzt.This is done by overriding the XmlUrlResolver.Credentials property and the XmlUrlResolver.GetEntity method.

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

Das Zwischenspeicherverhalten der XmlCachingResolver-Klasse wird in der GetEntity-Methode implementiert.The caching behavior of the XmlCachingResolver class is implemented in the GetEntity method. Zu diesem Zweck werden die neuen Objekte WebRequest und HttpRequestCachePolicy erstellt.This is done by creating new WebRequest and HttpRequestCachePolicy objects. Das HttpRequestCachePolicy-Objekt wird erstellt, wobei der Default-Member der HttpRequestCacheLevel-Enumeration verwendet wird.The HttpRequestCachePolicy object is created using the Default member of the HttpRequestCacheLevel enumeration.

Die CachePolicy-Eigenschaft des WebRequest-Objekts wird mit dem HttpRequestCachePolicy-Objekt angegeben.The CachePolicy property of the WebRequest object is set with the HttpRequestCachePolicy object.

Eine Instanz der XmlCachingResolver-Klasse wird mit dem Boolean-Ausdruck enableHttpCaching erstellt.An instance of the XmlCachingResolver class is created with the Boolean enableHttpCaching. Wenn dieser Wert wird festgelegt true, die Instanz löst eine Ressource im Standardcache, falls möglich.When this value is set to true, the instance resolves a resource from the default cache if possible. Wenn enableHttpCaching nastaven NA hodnotu false, die Instanz verwendet das Standardverhalten und löst Sie Ressourcen aus der Quelle.When enableHttpCaching is set to false, the instance uses the default behavior and resolves resources from their source.

Hinweis

In diesem Beispiel nutzt die Erweiterbarkeit der XML-Klassen in .NET Framework.This example leverages the extensibility of the XML classes in the .NET Framework. Es können auch andere Klassen erweitert und angepasst werden, um den Anforderungen einer bestimmten Anwendung zu entsprechen.Other classes can be extended and customized to suit the needs of a particular application.

Konstruktoren

XmlUrlResolver() XmlUrlResolver() XmlUrlResolver() XmlUrlResolver()

Initialisiert eine neue Instanz der XmlUrlResolver-Klasse.Initializes a new instance of the XmlUrlResolver class.

Eigenschaften

CachePolicy CachePolicy CachePolicy CachePolicy

Ruft die Cacherichtlinie für das zugrunde liegende WebRequest-Objekt ab oder legt diese fest.Gets or sets the cache policy for the underlying WebRequest object.

Credentials Credentials Credentials Credentials

Legt Anmeldeinformationen zum Authentifizieren von Webanforderungen fest.Sets credentials used to authenticate web requests.

Proxy Proxy Proxy Proxy

Ruft den Netzwerkproxy für das zugrunde liegende WebRequest-Objekt ab oder legt diesen fest.Gets or sets the network proxy for the underlying WebRequest object.

Methoden

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Bestimmt, ob das angegebene Objekt mit dem aktuellen Objekt identisch ist.Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetEntity(Uri, String, Type) GetEntity(Uri, String, Type) GetEntity(Uri, String, Type) GetEntity(Uri, String, Type)

Ordnet einem Objekt, das die eigentliche Ressource enthält, einen URI zu.Maps a URI to an object that contains the actual resource.

GetEntityAsync(Uri, String, Type) GetEntityAsync(Uri, String, Type) GetEntityAsync(Uri, String, Type) GetEntityAsync(Uri, String, Type)

Ordnet einem Objekt, das die eigentliche Ressource enthält, asynchron einen URI zu.Asynchronously maps a URI to an object that contains the actual resource.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Fungiert als Standardhashfunktion.Serves as the default hash function.

(Inherited from Object)
GetType() GetType() GetType() GetType()

Ruft den Type der aktuellen Instanz ab.Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.Creates a shallow copy of the current Object.

(Inherited from Object)
ResolveUri(Uri, String) ResolveUri(Uri, String) ResolveUri(Uri, String) ResolveUri(Uri, String)

Löst den absoluten URI ausgehend von der Basis und relativen URIs auf.Resolves the absolute URI from the base and relative URIs.

SupportsType(Uri, Type) SupportsType(Uri, Type) SupportsType(Uri, Type) SupportsType(Uri, Type)

Erlaubt dem Resolver, andere Typen als Stream zurückzugeben.Enables the resolver to return types other than Stream.

(Inherited from XmlResolver)
ToString() ToString() ToString() ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.Returns a string that represents the current object.

(Inherited from Object)

Gilt für:

Siehe auch