Compartir a través de


Resolución de recursos con XmlResolver

La clase XmlReader utiliza XmlResolver para resolver DTD, entidades y esquemas externos.De forma predeterminada, la clase XmlReader utiliza un XmlUrlResolver sin credenciales de usuario.Para especificar el XmlResolver que se va a utilizar, establezca la propiedad XmlResolver y pase el objeto XmlReaderSettings al método Create.

El siguiente código crea una instancia de XmlReader que utiliza un XmlUrlResolver con credenciales predeterminadas.

' 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("https://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("https://ServerName/data/books.xml", settings);
// 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"https://ServerName/data/books.xml", settings );

Si el archivo books.xml contiene una DTD externa, el XmlReader lo tratará de la siguiente manera.Para resolver una DTD, XmlReader llama al método GetEntity para obtener una representación de secuencia de la entidad.Si el identificador URI de la DTD es relativo, XmlReader llama al método ResolveUri y devuelve un identificador URI absoluto para el relativeUri y baseUri especificados.Si XmlUrlResolver no sabe cómo resolver el identificador URI determinado, devuelve una referencia null.

El método GetEntity utiliza la información contenida en la propiedad Credentials según sea necesario para obtener acceso al recurso.No existe ningún descriptor de acceso get para esta propiedad por motivos de seguridad.Al sobrescribir XmlResolver, GetEntity es el método que utiliza la información de las credenciales de la propiedad Credentials.

La resolución de todos los demás recursos XML es muy similar a la resolución de DTD.XmlResolver solo necesita saber cómo negociar la conexión con el recurso externo y devolver una representación de secuencia del contenido.El objeto que está realizando la llamada a XmlResolver es el que tiene la tarea de interpretar la secuencia.

Vea también

Conceptos

Cómo proporcionar credenciales de autenticación a XmlResolver al leer desde un archivo

Acceso a recursos externos para XmlReader

Resolución de recursos externos durante el procesamiento XSLT

Otros recursos

Resolver recursos XML externos nombrados por un identificador URI