XmlUrlResolver Klasa

Definicja

Rozpoznaje zewnętrzne zasoby XML o nazwie Uniform Resource Identifier (URI).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
Dziedziczenie
XmlUrlResolver

Przykłady

Poniższy przykład tworzy XmlReader , który XmlUrlResolver używa z poświadczeniami domyślnymi.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)

Uwagi

XmlUrlResolversłuży do rozpoznawania zewnętrznych zasobów XML, takich jak jednostki, definicje typu dokumentu (DTD) lub schematy.XmlUrlResolver is used to resolve external XML resources such as entities, document type definitions (DTDs) or schemas. Służy również do przetwarzania elementów include i import znalezionych w arkuszach stylów XML (Extensible StyleSheet Language) lub w schematach XSDIt is also used to process include and import elements found in Extensible StyleSheet Language (XSL) style sheets or XML Schema definition language (XSD) schemas.

XmlUrlResolverjest domyślnym programem rozpoznawania nazw dla wszystkich klas w System.Xml przestrzeni nazw.XmlUrlResolver is the default resolver for all classes in the System.Xml namespace. Obsługuje file:// http://Protokołyi i żądania z klasy.WebRequestIt supports the file:// and http:// protocols and requests from the WebRequest class.

Ważne

XmlUrlResolverobiekty mogą zawierać poufne informacje, takie jak poświadczenia użytkownika.XmlUrlResolver objects can contain sensitive information such as user credentials. Należy zachować ostrożność podczas buforowania XmlUrlResolver obiektów i nie należy przekazywać XmlUrlResolver obiektów do niezaufanego składnika.You should be careful when you cache XmlUrlResolver objects and should not pass XmlUrlResolver objects to an untrusted component.

Rozpoznawanie elementów DTDResolving DTDs

Jeśli czytnik XML (XmlReader) odczytuje plik XML, który zawiera zewnętrzny DTD, XmlUrlResolver.GetEntityAsync wywołuje metodę, aby uzyskać reprezentację strumienia DTD.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. Jeśli identyfikator URI DTD jest względnym identyfikatorem URI, czytelnik XML wywołuje XmlUrlResolver.ResolveUri metodę i zwraca bezwzględny identyfikator URI dla danego relativeUri i baseURi parametru.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. Jeśli nie wiesz, jak rozpoznać identyfikator URI, zwraca null. XmlUrlResolverIf the XmlUrlResolver doesn't know how to resolve the URI, it returns null.

Metoda używa informacji Credentials we właściwości odpowiednio do uzyskania dostępu do zasobu. XmlUrlResolver.GetEntityThe XmlUrlResolver.GetEntity method uses the information in the Credentials property as appropriate to gain access to the resource. Nie get ma metody dostępu do tej właściwości ze względów bezpieczeństwa.There is no get accessor to this property for security reasons. Podczas zastępowania XmlResolver, GetEntity to metoda, która wykorzystuje informacje o poświadczeniach we właściwości poświadczenia .When overwriting XmlResolver, GetEntity is the method that utilizes the credential information in the Credentials property.

Rozwiązanie wszystkich innych zasobów XML jest bardzo podobne do rozpoznawania elementów DTD.Resolving all other XML resources is very similar to resolving DTDs. XmlResolvernegocjuje połączenie z zasobem zewnętrznym i zwraca Stream reprezentację zawartości.XmlResolver negotiates the connection with the external resource and returns a Stream representation of the content. Obiekt, który sprawia, że wywołanie XmlResolver interpretuje strumień.The object that is making the call to XmlResolver interprets the stream.

Rozszerzanie klasy XmlUrlResolverExtending the XmlUrlResolver class

Domyślnym zachowaniem XmlUrlResolver klasy jest rozpoznawanie zasobu danych XML z jego źródła, a nie z pamięci podręcznej.The default behavior of the XmlUrlResolver class is to resolve an XML data resource from its source, not from cache. W niektórych przypadkach rozpoznawanie zasobów danych z pamięci podręcznej może zwiększyć wydajność aplikacji przez zapisanie podróży do serwera zasobów danych.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. Zyski z wydajności należy odważyć w tym miejscu, aby uzyskać aktualną zawartość.The performance gains here must be weighed against the need for up-to-date content.

Poniższy przykład rozszerza XmlUrlResolver i kompiluje nową klasę, XmlCachingResolver, aby pobrać zasoby z pamięci podręcznej.The following example extends XmlUrlResolver and builds a new class, XmlCachingResolver, to retrieve resources from the cache. Jest to realizowane przez zastąpienie XmlUrlResolver.Credentials właściwości XmlUrlResolver.GetEntity i metody.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

Zachowanie XmlCachingResolver pamięci podręcznej klasy jest implementowane GetEntity w metodzie.The caching behavior of the XmlCachingResolver class is implemented in the GetEntity method. W tym celu należy utworzyć nowe WebRequest obiekty HttpRequestCachePolicy i.This is done by creating new WebRequest and HttpRequestCachePolicy objects. Obiekt jest tworzony Default przy użyciu elementu członkowskiego HttpRequestCacheLevel wyliczenia. HttpRequestCachePolicyThe HttpRequestCachePolicy object is created using the Default member of the HttpRequestCacheLevel enumeration.

CachePolicy WłaściwośćWebRequestobiektujest ustawiana za pomocą obiektu.HttpRequestCachePolicyThe CachePolicy property of the WebRequest object is set with the HttpRequestCachePolicy object.

Wystąpienie XmlCachingResolver klasy jest Boolean tworzoneenableHttpCachingprzy użyciu.An instance of the XmlCachingResolver class is created with the Boolean enableHttpCaching. Gdy ta wartość jest ustawiona na true, wystąpienie rozwiązuje zasób z domyślnej pamięci podręcznej, jeśli jest to możliwe.When this value is set to true, the instance resolves a resource from the default cache if possible. Gdy enableHttpCaching jest ustawiona na false, wystąpienie używa zachowania domyślnego i rozwiązuje zasoby ze źródła.When enableHttpCaching is set to false, the instance uses the default behavior and resolves resources from their source.

Uwaga

W tym przykładzie wykorzystuje rozszerzalność klas XML w .NET Framework.This example leverages the extensibility of the XML classes in the .NET Framework. Inne klasy mogą być rozszerzone i dostosowane do potrzeb określonej aplikacji.Other classes can be extended and customized to suit the needs of a particular application.

Konstruktory

XmlUrlResolver()

Inicjuje nowe wystąpienie klasy XmlUrlResolver klasy.Initializes a new instance of the XmlUrlResolver class.

Właściwości

CachePolicy

Pobiera lub ustawia zasady pamięci podręcznej dla WebRequest obiektu źródłowego.Gets or sets the cache policy for the underlying WebRequest object.

Credentials

Ustawia poświadczenia używane do uwierzytelniania żądań sieci Web.Sets credentials used to authenticate web requests.

Proxy

Pobiera lub ustawia serwer proxy sieci dla bazowego WebRequest obiektu.Gets or sets the network proxy for the underlying WebRequest object.

Metody

Equals(Object)

Określa, czy określony obiekt jest równy bieżącemu obiektowi.Determines whether the specified object is equal to the current object.

(Odziedziczone po Object)
GetEntity(Uri, String, Type)

Mapuje identyfikator URI na obiekt, który zawiera rzeczywisty zasób.Maps a URI to an object that contains the actual resource.

GetEntityAsync(Uri, String, Type)

Asynchronicznie mapuje identyfikator URI do obiektu, który zawiera rzeczywisty zasób.Asynchronously maps a URI to an object that contains the actual resource.

GetHashCode()

Służy jako domyślna funkcja skrótu.Serves as the default hash function.

(Odziedziczone po Object)
GetType()

Pobiera Type bieżącego wystąpienia.Gets the Type of the current instance.

(Odziedziczone po Object)
MemberwiseClone()

Tworzy skróconą kopię bieżącego Object.Creates a shallow copy of the current Object.

(Odziedziczone po Object)
ResolveUri(Uri, String)

Rozwiązuje bezwzględny identyfikator URI z podstawowego i względnego identyfikatora URI.Resolves the absolute URI from the base and relative URIs.

SupportsType(Uri, Type)

Umożliwia programowi rozpoznawania nazw zwracanie typów innych Streamniż.Enables the resolver to return types other than Stream.

(Odziedziczone po XmlResolver)
ToString()

Zwraca ciąg, który reprezentuje bieżący obiekt.Returns a string that represents the current object.

(Odziedziczone po Object)

Dotyczy

Zobacz też