XmlResolver XmlResolver XmlResolver XmlResolver 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 XmlResolver abstract
public abstract class XmlResolver
type XmlResolver = class
Public MustInherit Class XmlResolver
Herencia
XmlResolverXmlResolverXmlResolverXmlResolver
Derivado

Ejemplos

En el ejemplo siguiente se XmlUrlResolver crea una con las credenciales predeterminadas.The following example creates an XmlUrlResolver with default credentials. XmlReader Se utiliza para leer y mostrar el flujo de datos resultante.A XmlReader is used to read and display the resulting data stream.

using System;
using System.Xml;
using System.IO;

class Example
{
    static void Main()
    {
        // Create an XmlUrlResolver with default credentials.
        XmlUrlResolver resolver = new XmlUrlResolver();
        resolver.Credentials = System.Net.CredentialCache.DefaultCredentials;

        // Point the resolver at the desired resource and resolve as a stream.
        Uri baseUri = new Uri("http://serverName/");
        Uri fulluri = resolver.ResolveUri(baseUri, "fileName.xml");
        Stream s = (Stream)resolver.GetEntity(fulluri, null, typeof(Stream));

        // Create the reader with the resolved stream and display the data.
        XmlReader reader = XmlReader.Create(s);
        while (reader.Read())
        {
            Console.WriteLine(reader.ReadOuterXml());
        }
    }
}
Imports System
Imports System.Xml
Imports System.IO

Module Module1

    Sub Main()
        ' Create an XmlUrlResolver with default credentials.
        Dim resolver As New XmlUrlResolver()
        resolver.Credentials = System.Net.CredentialCache.DefaultCredentials

        ' Point the resolver at the desired resource and resolve as a stream.
        Dim baseUri As New Uri("http://serverName/")
        Dim fulluri As Uri = resolver.ResolveUri(baseUri, "fileName.xml")
        Dim s As Stream = CType(resolver.GetEntity(fulluri, Nothing, GetType(Stream)), Stream)

        ' Create the reader with the resolved stream and display the data.
        Dim reader As XmlReader = XmlReader.Create(s)
        While reader.Read()
            Console.WriteLine(reader.ReadOuterXml())
        End While
    End Sub
End Module

Comentarios

El XmlResolver tipo se utiliza para resolver recursos XML externos, como entidades, definiciones de tipo de documento (DTD) o esquemas.The XmlResolver type 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.

XmlResolvercontrola todos los aspectos de la negociación de la conexión con los recursos, incluido el control de las credenciales de seguridad, la apertura de la conexión al origen de datos y la devolución del recurso en forma de flujo u otro tipo de objeto.XmlResolver handles all aspects of negotiating the connection to the resources, including handling security credentials, opening the connection to the data source, and returning the resource in the form of a stream or other object type. El objeto al que XmlResolver llama tiene la tarea de interpretar la secuencia.The object that calls XmlResolver has the task of interpreting the stream.

El System.Xml espacio de nombres incluye dos implementaciones concretas XmlResolver de la clase:The System.Xml namespace includes two concrete implementations of the XmlResolver class:

  • 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 System.Net.WebRequest.It supports the file:// and http:// protocols and requests from the System.Net.WebRequest class. Para obtener ejemplos de cómo extender la clase para mejorar el rendimiento XmlUrlResolver , vea la página de referencia.For examples of extending the class to improve performance, see the XmlUrlResolver reference page.

  • XmlSecureResolverayuda a proteger XmlResolver otro objeto ajustando el objeto y restringiendo los recursos a los que puede tener acceso.XmlSecureResolver helps secure another XmlResolver object by wrapping the object and restricting the resources that it can access. Por ejemplo, puede XmlSecureResolver prohibir el acceso a zonas o sitios de Internet específicos.For example, the XmlSecureResolver can prohibit access to specific Internet sites or zones.

Puede crear y especificar su propia resolución.You can create and specify your own resolver. Si no se especifica un solucionador, el lector utiliza un valor predeterminado XmlUrlResolver sin credenciales de usuario.If you don't specify a resolver, the reader uses a default XmlUrlResolver with no user credentials.

Para especificar el XmlResolver que se va a utilizar, establezca la propiedad XmlReaderSettings.XmlResolver y pase el objeto XmlReaderSettings al método Create.You specify the XmlResolver to use by setting the XmlReaderSettings.XmlResolver property and passing the XmlReaderSettings object to the Create method.

Si el recurso está almacenado en un sistema que requiere autenticación, use la XmlResolver.Credentials propiedad para especificar las credenciales necesarias.If the resource is stored on a system that requires authentication, you use the XmlResolver.Credentials property to specify the necessary credentials.

Proporcionar credenciales de autenticaciónSupplying authentication credentials

El archivo que contiene los datos XML que se van a leer puede tener una directiva de acceso restringido.The file that contains the XML data to read may have a restricted access policy. Si se necesita autenticación para obtener acceso a un recurso de red, utilice la propiedad Credentials para especificar las credenciales necesarias.If authentication is required to access a network resource, use the Credentials property to specify the necessary credentials. Si no Credentials se establece la propiedad, las credenciales se nullestablecen en.If the Credentials property is not set, credentials are set to null.

Por ejemplo, supongamos que se necesitan credenciales al solicitar datos de la web para la autenticación.For example, assume that credentials are needed when requesting data from the web for authentication purposes. A menos que el directorio virtual web permita el acceso anónimo, debe Credentials establecer la propiedad para proporcionar las credenciales.Unless the web virtual directory allows anonymous access, you must set the Credentials property to supply credentials. En el ejemplo siguiente se XmlReader crea un objeto que XmlUrlResolver utiliza con credenciales predeterminadas para obtener acceso al http://localhost/bookstore/inventory.xml sitio.The following example creates an XmlReader object that uses an XmlUrlResolver with default credentials to access the http://localhost/bookstore/inventory.xml site.

// Create a resolver with default credentials.
XmlUrlResolver^ resolver = gcnew XmlUrlResolver;
resolver->Credentials = System::Net::CredentialCache::DefaultCredentials;

 // Set the reader settings object to use the resolver.
 settings->XmlResolver = resolver;

// Create the XmlReader object.
XmlReader^ reader = XmlReader::Create( L"http://ServerName/data/books.xml", settings );

// Create a resolver with default credentials.
XmlUrlResolver resolver = new XmlUrlResolver();
resolver.Credentials = System.Net.CredentialCache.DefaultCredentials;

// Set the reader settings object to use the resolver.
settings.XmlResolver = resolver;

// Create the XmlReader object.
XmlReader reader = XmlReader.Create("http://ServerName/data/books.xml", settings);
' Create a resolver with default credentials.
Dim resolver as XmlUrlResolver = new XmlUrlResolver()
resolver.Credentials = System.Net.CredentialCache.DefaultCredentials

' Set the reader settings object to use the resolver.
settings.XmlResolver = resolver

' Create the XmlReader object.
Dim reader as XmlReader = XmlReader.Create("http://ServerName/data/books.xml", settings)

Puede proporcionar credenciales diferentes para diferentes URI y agregarlas a una memoria caché.You can supply different credentials for different URIs and add them to a cache. Estas credenciales se utilizan para comprobar la autenticación de los diferentes identificadores URI del origen inicial del XML.These credentials are used to check authentication for the different URIs regardless of the original source of the XML. En el ejemplo siguiente se muestra cómo agregar credenciales a una memoria caché.The following example shows how to add credentials to a cache.

// Create the credentials.
NetworkCredential myCred = new NetworkCredential(UserName,SecurelyStoredPassword,Domain); 
CredentialCache myCache = new CredentialCache(); 
myCache.Add(new Uri("http://www.contoso.com/"), "Basic", myCred); 
myCache.Add(new Uri("http://app.contoso.com/"), "Basic", myCred);

// Set the credentials on the XmlUrlResolver object.
XmlUrlResolver resolver = new XmlUrlResolver();
resolver.Credentials = myCache;

// Compile the style sheet.
XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load("http://serverName/data/xsl/order.xsl",XsltSettings.Default, resolver);	
' Create the credentials.
Dim myCred As NetworkCredential = New NetworkCredential(UserName,SecurelyStoredPassword,Domain)
Dim myCache As CredentialCache = New CredentialCache()
myCache.Add(new Uri("http://www.contoso.com/"), "Basic", myCred)
myCache.Add(new Uri("http://app.contoso.com/"), "Basic", myCred)

' Set the credentials on the XmlUrlResolver object.
Dim resolver As XmlUrlResolver = New XmlUrlResolver()
resolver.Credentials = myCache

' Compile the style sheet.
Dim xslt As XslCompiledTransform = New XslCompiledTransform()
xslt.Load("http://serverName/data/xsl/order.xsl", XsltSettings.Default, resolver)

Consideraciones de seguridadSecurity considerations

Tenga en cuenta los siguientes elementos al trabajar XmlResolver con la clase.Consider the following items when working with the XmlResolver class.

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

  • Si está diseñando una propiedad de clase que utilice la clase XmlResolver, dicha propiedad se debería definir como de solo escritura.If you are designing a class property that uses the XmlResolver class, the property should be defined as a write-only property. La propiedad se puede utilizar para especificar el XmlResolver que se debe utilizar, pero no se puede utilizar para devolver un objeto XmlResolver.The property can be used to specify the XmlResolver to use, but it cannot be used to return an XmlResolver object.

  • Si la aplicación acepta XmlResolver objetos de código que no es de confianza, no puede suponer que el URI GetEntity que se pasa al método será el mismo que el ResolveUri devuelto por el método.If your application accepts XmlResolver objects from untrusted code, you cannot assume that the URI passed into the GetEntity method will be the same as that returned by the ResolveUri method. Las clases derivadas de la clase XmlResolver pueden invalidar el método GetEntity y devolver datos diferentes a lo que contenía el identificador URI original.Classes derived from the XmlResolver class can override the GetEntity method and return data that is different than what was contained in the original URI.

  • La aplicación puede mitigar las amenazas de denegación de servicio GetEntity de la memoria para IStream el método implementando un que limite el número de bytes leídos.Your application can mitigate memory denial of service threats to the GetEntity method by implementing an IStream that limits the number of bytes read. Esto ayuda a protegerse frente a situaciones en las que el GetEntity código malintencionado intenta pasar una secuencia infinita de bytes al método.This helps guard against situations where malicious code attempts to pass an infinite stream of bytes to the GetEntity method.

Constructores

XmlResolver() XmlResolver() XmlResolver() XmlResolver()

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

Propiedades

Credentials Credentials Credentials Credentials

Cuando se invalida en una clase derivada, establece las credenciales usadas para autenticar las solicitudes web.When overridden in a derived class, sets the credentials used to authenticate web requests.

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)

Cuando se invalida en una clase derivada, asigna un identificador URI a un objeto que contiene el recurso real.When overridden in a derived class, 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)

Cuando se invalida en una clase derivada, resuelve el identificador URI absoluto a partir de los identificadores URI base y relativo.When overridden in a derived class, 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.

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: