XmlUrlResolver XmlUrlResolver XmlUrlResolver XmlUrlResolver Class

Definizione

Risolve risorse XML esterne denominate da un URI (Uniform Resource Identifier).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
Ereditarietà
XmlUrlResolverXmlUrlResolverXmlUrlResolverXmlUrlResolver

Esempi

Nell'esempio seguente viene creato XmlReader un oggetto che XmlUrlResolver utilizza un oggetto con credenziali predefinite.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)

Commenti

XmlUrlResolverviene utilizzato per risolvere le risorse XML esterne, ad esempio le entità, le definizioni dei tipi di documento (DTD) o gli schemi.XmlUrlResolver is used to resolve external XML resources such as entities, document type definitions (DTDs) or schemas. Viene inoltre utilizzato per elaborare gli elementi include e Import presenti nei fogli di stile XSL (Extensible StyleSheet Language) o negli schemi XSD (XML Schema Definition Language).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è il sistema di risoluzione predefinito per tutte le System.Xml classi nello spazio dei nomi.XmlUrlResolver is the default resolver for all classes in the System.Xml namespace. Supporta i protocolli file:// e http:// e le richieste dalla classe WebRequest.It supports the file:// and http:// protocols and requests from the WebRequest class.

Importante

Gli oggetti XmlUrlResolver possono contenere informazioni sensibili quali le credenziali utente.XmlUrlResolver objects can contain sensitive information such as user credentials. È necessario prestare attenzione quando si memorizzano nella cache XmlUrlResolver gli oggetti e non devono passare XmlUrlResolver oggetti a un componente non attendibile.You should be careful when you cache XmlUrlResolver objects and should not pass XmlUrlResolver objects to an untrusted component.

Risoluzione di DTDResolving DTDs

Se un lettore XML (XmlReader) legge un file XML che contiene una DTD esterna, chiama il XmlUrlResolver.GetEntityAsync metodo per ottenere una rappresentazione del flusso della 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. Se l'URI della DTD è un URI relativo, il lettore XML chiama il XmlUrlResolver.ResolveUri metodo e restituisce un URI assoluto per i parametri e relativeUri baseURi specificati.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. Se non sa come risolvere l'URI, restituisce null. XmlUrlResolverIf the XmlUrlResolver doesn't know how to resolve the URI, it returns null.

Il metodo XmlUrlResolver.GetEntity utilizza le informazioni contenute nella proprietà Credentials in base alle necessità per ottenere l'accesso alla risorsa.The XmlUrlResolver.GetEntity method uses the information in the Credentials property as appropriate to gain access to the resource. Per motivi di sicurezza, non è possibile accedere a questa proprietà tramite la funzione di accesso get.There is no get accessor to this property for security reasons. Quando si esegue XmlResolverla sovrascrittura, GetEntity è il metodo che utilizza le informazioni sulle credenziali nella proprietà Credentials . ****When overwriting XmlResolver, GetEntity is the method that utilizes the credential information in the Credentials property.

Il metodo di risoluzione di tutte le altre risorse XML è molto simile a quello utilizzato per risolvere le DTD.Resolving all other XML resources is very similar to resolving DTDs. XmlResolvernegozia la connessione con la risorsa esterna e restituisce una Stream rappresentazione del contenuto.XmlResolver negotiates the connection with the external resource and returns a Stream representation of the content. Oggetto che effettua la chiamata per XmlResolver interpretare il flusso.The object that is making the call to XmlResolver interprets the stream.

Estensione della classe XmlUrlResolverExtending the XmlUrlResolver class

In base al comportamento predefinito, la classe XmlUrlResolver risolve una risorsa dei dati XML dalla relativa origine, non dalla cache.The default behavior of the XmlUrlResolver class is to resolve an XML data resource from its source, not from cache. In alcuni casi la risoluzione di una risorsa dei dati dalla cache può migliorare le prestazioni di un'applicazione in quanto consente di evitare un'operazione di lettura dal server delle risorse dei dati.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. È tuttavia necessario soppesare in questo caso i vantaggi ottenibili in termini di prestazioni con la necessità di disporre di contenuto sempre aggiornato.The performance gains here must be weighed against the need for up-to-date content.

Nell'esempio seguente viene XmlUrlResolver estesa e compilata una XmlCachingResolvernuova classe,, per recuperare risorse dalla cache.The following example extends XmlUrlResolver and builds a new class, XmlCachingResolver, to retrieve resources from the cache. ovvero eseguendo l'override della proprietà XmlUrlResolver.Credentials e del metodo XmlUrlResolver.GetEntity.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

Il comportamento di memorizzazione nella cache della classe XmlCachingResolver viene implementato nel metodo GetEntity.The caching behavior of the XmlCachingResolver class is implemented in the GetEntity method. A tale scopo vengono creati nuovi oggetti WebRequest e HttpRequestCachePolicy.This is done by creating new WebRequest and HttpRequestCachePolicy objects. L'oggetto HttpRequestCachePolicy viene creato utilizzando il membro Default dell'enumerazione HttpRequestCacheLevel.The HttpRequestCachePolicy object is created using the Default member of the HttpRequestCacheLevel enumeration.

La proprietà CachePolicy dell'oggetto WebRequest viene impostata con l'oggetto HttpRequestCachePolicy.The CachePolicy property of the WebRequest object is set with the HttpRequestCachePolicy object.

Viene creata un'istanza della classe XmlCachingResolver con il parametro Boolean che è di tipo enableHttpCaching.An instance of the XmlCachingResolver class is created with the Boolean enableHttpCaching. Quando questo valore è impostato su true, l'istanza di risolve una risorsa dalla cache predefinita, se possibile.When this value is set to true, the instance resolves a resource from the default cache if possible. Quando enableHttpCaching è impostato su false, l'istanza di utilizza il comportamento predefinito e risolve le risorse dall'origine.When enableHttpCaching is set to false, the instance uses the default behavior and resolves resources from their source.

Nota

Questo esempio sfrutta l'estendibilità delle classi XML nel .NET Framework.This example leverages the extensibility of the XML classes in the .NET Framework. È possibile estendere altre classi e personalizzarle in base alle esigenze di una determinata applicazione.Other classes can be extended and customized to suit the needs of a particular application.

Costruttori

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

Inizializza una nuova istanza della classe XmlUrlResolver.Initializes a new instance of the XmlUrlResolver class.

Proprietà

CachePolicy CachePolicy CachePolicy CachePolicy

Ottiene o imposta i criteri della cache per l'oggetto WebRequest sottostante.Gets or sets the cache policy for the underlying WebRequest object.

Credentials Credentials Credentials Credentials

Imposta le credenziali usate per autenticare le richieste Web.Sets credentials used to authenticate web requests.

Proxy Proxy Proxy Proxy

Ottiene o imposta il proxy di rete per l'oggetto WebRequest sottostante.Gets or sets the network proxy for the underlying WebRequest object.

Metodi

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

Determina se l'oggetto specificato è uguale all'oggetto corrente.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)

Esegue il mapping di un URI a un oggetto contenente la risorsa effettiva.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)

Esegue in modo asincrono il mapping di un URI a un oggetto contenente la risorsa effettiva.Asynchronously maps a URI to an object that contains the actual resource.

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

Funge da funzione hash predefinita.Serves as the default hash function.

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

Ottiene l'oggetto Type dell'istanza corrente.Gets the Type of the current instance.

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

Crea una copia superficiale dell'oggetto Object corrente.Creates a shallow copy of the current Object.

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

Risolve l'URI assoluto dagli URI di base e relativi.Resolves the absolute URI from the base and relative URIs.

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

Consente al resolver di restituire tipi diversi da Stream.Enables the resolver to return types other than Stream.

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

Restituisce una stringa che rappresenta l'oggetto corrente.Returns a string that represents the current object.

(Inherited from Object)

Si applica a

Vedi anche