XmlUrlResolver XmlUrlResolver XmlUrlResolver XmlUrlResolver Class

Definición

Resuelve los recursos XML externos designados por un identificador de recursos uniforme (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
Herencia
XmlUrlResolverXmlUrlResolverXmlUrlResolverXmlUrlResolver

Ejemplos

En el ejemplo siguiente se XmlReader crea un que usa con credenciales predeterminadas. XmlUrlResolverThe 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)

Comentarios

XmlUrlResolverse utiliza para resolver recursos XML externos como entidades, definiciones de tipo de documento (DTD) o esquemas.XmlUrlResolver is used to resolve external XML resources such as entities, document type definitions (DTDs) or schemas. También se utiliza para procesar los elementos include e import que se encuentran en las hojas de estilos del lenguaje de hojas de estilo extensible (XSL) o en los esquemas del lenguaje de definición de esquemas XML (XSD).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.

XmlUrlResolveres el solucionador predeterminado para todas las clases del System.Xml espacio de nombres.XmlUrlResolver is the default resolver for all classes in the System.Xml namespace. Es compatible con los protocolos file:// y http:// y las solicitudes de la clase WebRequest.It supports the file:// and http:// protocols and requests from the WebRequest class.

Importante

Los objetos XmlUrlResolver pueden contener información confidencial como, por ejemplo, credenciales de usuario.XmlUrlResolver objects can contain sensitive information such as user credentials. Debe tener cuidado al almacenar en caché XmlUrlResolver objetos y no debe pasar XmlUrlResolver objetos a un componente que no sea de confianza.You should be careful when you cache XmlUrlResolver objects and should not pass XmlUrlResolver objects to an untrusted component.

Resolver DTDResolving DTDs

Si un lector XML (XmlReader) está leyendo un archivo XML que contiene una DTD externa, XmlUrlResolver.GetEntityAsync llama al método para obtener una representación de flujo de la 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. Si el URI de la DTD es un URI relativo, el lector XML llama al XmlUrlResolver.ResolveUri método y devuelve un URI absoluto para los parámetros relativeUri y baseURi especificados.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. Si no sabe cómo resolver el URI, devuelve null. XmlUrlResolverIf the XmlUrlResolver doesn't know how to resolve the URI, it returns null.

El método XmlUrlResolver.GetEntity utiliza la información contenida en la propiedad Credentials según sea necesario para obtener acceso al recurso.The XmlUrlResolver.GetEntity method uses the information in the Credentials property as appropriate to gain access to the resource. No existe ningún descriptor de acceso get para esta propiedad por motivos de seguridad.There is no get accessor to this property for security reasons. Al sobrescribir XmlResolver, GetEntity es el método que emplea la información de credenciales en la propiedad Credentials .When overwriting XmlResolver, GetEntity is the method that utilizes the credential information in the Credentials property.

La resolución de todos los demás recursos XML es muy similar a la resolución de DTD.Resolving all other XML resources is very similar to resolving DTDs. XmlResolvernegocia la conexión con el recurso externo y devuelve una Stream representación del contenido.XmlResolver negotiates the connection with the external resource and returns a Stream representation of the content. Objeto que realiza la llamada a para XmlResolver interpretar la secuencia.The object that is making the call to XmlResolver interprets the stream.

Extender la clase XmlUrlResolverExtending the XmlUrlResolver class

El objetivo predeterminado de la clase XmlUrlResolver es resolver un recurso de datos XML proveniente de su origen, no de la caché.The default behavior of the XmlUrlResolver class is to resolve an XML data resource from its source, not from cache. En algunos casos, puede mejorarse el rendimiento de la aplicación si se resuelven datos que provienen de la caché, eliminando así la necesidad de realizar una transferencia con el servidor que contiene dichos datos.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. El aumento de rendimiento debe ponderarse con la necesidad de contar con datos actualizados.The performance gains here must be weighed against the need for up-to-date content.

En el ejemplo siguiente XmlUrlResolver se extiende y se compila una XmlCachingResolvernueva clase,, para recuperar recursos de la memoria caché.The following example extends XmlUrlResolver and builds a new class, XmlCachingResolver, to retrieve resources from the cache. Esto se lleva a cabo reemplazando la propiedad XmlUrlResolver.Credentials y el método 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

El mecanismo de lectura desde caché de la clase XmlCachingResolver se implementa en el método GetEntity.The caching behavior of the XmlCachingResolver class is implemented in the GetEntity method. Esto se lleva a cabo creando objetos WebRequest y HttpRequestCachePolicy nuevos.This is done by creating new WebRequest and HttpRequestCachePolicy objects. El objeto HttpRequestCachePolicy se crea utilizando el miembro Default de la enumeración HttpRequestCacheLevel.The HttpRequestCachePolicy object is created using the Default member of the HttpRequestCacheLevel enumeration.

La propiedad CachePolicy del objeto WebRequest se configura con el objeto HttpRequestCachePolicy.The CachePolicy property of the WebRequest object is set with the HttpRequestCachePolicy object.

Se crea una instancia de la clase XmlCachingResolver con el parámetro Boolean enableHttpCaching.An instance of the XmlCachingResolver class is created with the Boolean enableHttpCaching. Cuando este valor se establece en true, la instancia de resuelve un recurso de la caché predeterminada si es posible.When this value is set to true, the instance resolves a resource from the default cache if possible. Cuando enableHttpCaching se establece en false, la instancia de utiliza el comportamiento predeterminado y resuelve los recursos desde su origen.When enableHttpCaching is set to false, the instance uses the default behavior and resolves resources from their source.

Nota

En este ejemplo se aprovecha la extensibilidad de las clases XML en el .NET Framework.This example leverages the extensibility of the XML classes in the .NET Framework. Es posible extender y personalizar otras clases con el fin de que se ajusten a los requisitos de una aplicación en particular.Other classes can be extended and customized to suit the needs of a particular application.

Constructores

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

Inicializa una nueva instancia de la clase XmlUrlResolver.Initializes a new instance of the XmlUrlResolver class.

Propiedades

CachePolicy CachePolicy CachePolicy CachePolicy

Obtiene o establece la directiva de caché para el objeto WebRequest subyacente.Gets or sets the cache policy for the underlying WebRequest object.

Credentials Credentials Credentials Credentials

Establece las credenciales usadas para autenticar las solicitudes web.Sets credentials used to authenticate web requests.

Proxy Proxy Proxy Proxy

Obtiene o establece el proxy de red para el objeto WebRequest subyacente.Gets or sets the network proxy for the underlying WebRequest object.

Métodos

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

Determina si el objeto especificado es igual al objeto actual.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)

Asigna un identificador URI a un objeto que contiene el recurso real.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)

Asigna asincrónicamente un identificador URI a un objeto que contiene el recurso real.Asynchronously maps a URI to an object that contains the actual resource.

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

Sirve como la función hash predeterminada.Serves as the default hash function.

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

Obtiene el Type de la instancia actual.Gets the Type of the current instance.

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

Crea una copia superficial del objeto Object actual.Creates a shallow copy of the current Object.

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

Resuelve el URI absoluto a partir de los URI base y relativo.Resolves the absolute URI from the base and relative URIs.

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

Permite al objeto Resolver devolver otros tipos además de Stream.Enables the resolver to return types other than Stream.

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

Devuelve una cadena que representa el objeto actual.Returns a string that represents the current object.

(Inherited from Object)

Se aplica a

Consulte también: