XmlResolver Classe

Definição

Resolve recursos XML externos nomeados por um URI (Uniform Resource Identifier).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
Herança
XmlResolver
Derivado

Exemplos

O exemplo a seguir cria um XmlUrlResolver com as credenciais padrão.The following example creates an XmlUrlResolver with default credentials. Um XmlReader é usado para ler e exibir o fluxo de dados 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.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

Comentários

O tipo de XmlResolver é usado para resolver recursos XML externos, como entidades, DTDs (definições de tipo de documento) ou esquemas.The XmlResolver type is used to resolve external XML resources, such as entities, document type definitions (DTDs), or schemas. Ele também é usado para processar elementos include e Import encontrados em folhas de estilo XSL (Extensible Stylesheet Language) ou em esquemas 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.

o XmlResolver lida com todos os aspectos de negociação da conexão com os recursos, incluindo a manipulação de credenciais de segurança, a abertura da conexão com a fonte de dados e o retorno do recurso na forma de um fluxo ou outro 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. O objeto que chama XmlResolver tem a tarefa de interpretar o fluxo.The object that calls XmlResolver has the task of interpreting the stream.

O namespace System.Xml inclui duas implementações concretas da classe XmlResolver:The System.Xml namespace includes two concrete implementations of the XmlResolver class:

  • XmlUrlResolver é o resolvedor padrão para todas as classes no namespace System.Xml.XmlUrlResolver is the default resolver for all classes in the System.Xml namespace. Suporta file:// e os protocolos e as solicitações de http:// de System.Net.WebRequest classe.It supports the file:// and http:// protocols and requests from the System.Net.WebRequest class. Para obter exemplos de como estender a classe para melhorar o desempenho, consulte a página de referência do XmlUrlResolver.For examples of extending the class to improve performance, see the XmlUrlResolver reference page.

  • XmlSecureResolver ajuda a proteger outro objeto de XmlResolver encapsulando o objeto e restringindo os recursos que ele pode acessar.XmlSecureResolver helps secure another XmlResolver object by wrapping the object and restricting the resources that it can access. Por exemplo, o XmlSecureResolver pode proibir o acesso a zonas ou sites da Internet específicos.For example, the XmlSecureResolver can prohibit access to specific Internet sites or zones.

Você pode criar e especificar seu próprio resolvedor.You can create and specify your own resolver. Se você não especificar um resolvedor, o leitor usará um XmlUrlResolver padrão sem credenciais de usuário.If you don't specify a resolver, the reader uses a default XmlUrlResolver with no user credentials.

Você especifica XmlResolver para usar definindo a propriedade de XmlReaderSettings.XmlResolver e passando o objeto de XmlReaderSettings para o método de Create .You specify the XmlResolver to use by setting the XmlReaderSettings.XmlResolver property and passing the XmlReaderSettings object to the Create method.

Se o recurso estiver armazenado em um sistema que requer autenticação, use a propriedade XmlResolver.Credentials para especificar as credenciais necessárias.If the resource is stored on a system that requires authentication, you use the XmlResolver.Credentials property to specify the necessary credentials.

Fornecendo credenciais de autenticaçãoSupplying authentication credentials

O arquivo que contém os dados XML a serem lidos pode ter uma política de acesso restrito.The file that contains the XML data to read may have a restricted access policy. Se a autenticação for necessária para acessar um recurso de rede, use a propriedade de Credentials para especificar as credenciais necessárias.If authentication is required to access a network resource, use the Credentials property to specify the necessary credentials. Se a propriedade Credentials não estiver definida, as credenciais serão definidas como null.If the Credentials property is not set, credentials are set to null.

Por exemplo, suponha que as credenciais sejam necessárias ao solicitar dados da Web para fins de autenticação.For example, assume that credentials are needed when requesting data from the web for authentication purposes. A menos que o diretório virtual da Web permita acesso anônimo, você deve definir a propriedade Credentials para fornecer credenciais.Unless the web virtual directory allows anonymous access, you must set the Credentials property to supply credentials. O exemplo a seguir cria um objeto XmlReader que usa um XmlUrlResolver com credenciais padrão para acessar o site http://localhost/bookstore/inventory.xml.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)

Você pode fornecer credenciais diferentes para URIs diferentes e adicioná-las a um cache.You can supply different credentials for different URIs and add them to a cache. Essas credenciais são usadas para verificar a autenticação para o URIs diferente independentemente da fonte original XML.These credentials are used to check authentication for the different URIs regardless of the original source of the XML. O exemplo a seguir mostra como adicionar credenciais a um cache.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)

Considerações sobre segurançaSecurity considerations

Considere os seguintes itens ao trabalhar com a classe XmlResolver.Consider the following items when working with the XmlResolver class.

  • os objetos deXmlResolver podem conter informações sigilosas como credenciais do usuário.XmlResolver objects can contain sensitive information such as user credentials. Você deve ter cuidado ao armazenar em cache XmlResolver objetos e não deve passar o objeto XmlResolver para um componente não confiável.You should be careful when caching XmlResolver objects and should not pass the XmlResolver object to an untrusted component.

  • Se você estiver criando uma classe de propriedade que usa a classe de XmlResolver , a propriedade deve ser definida como uma propriedade somente de escrita.If you are designing a class property that uses the XmlResolver class, the property should be defined as a write-only property. A propriedade pode ser usada para especificar XmlResolver para usar, mas não pode ser usada para retornar um objeto de XmlResolver .The property can be used to specify the XmlResolver to use, but it cannot be used to return an XmlResolver object.

  • Se seu aplicativo aceitar XmlResolver objetos de código não confiável, você não poderá pressupor que o URI passado para o método GetEntity será o mesmo que o retornado pelo método ResolveUri.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. Classes derivadas de classes de XmlResolver podem substituir o método de GetEntity e os dados de retorno que são diferentes do que foi contido no URL 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.

  • Seu aplicativo pode atenuar as ameaças de negação de serviço de memória para o método GetEntity implementando um IStream que limita o número de bytes lidos.Your application can mitigate memory denial of service threats to the GetEntity method by implementing an IStream that limits the number of bytes read. Isso ajuda a proteger contra situações em que o código mal-intencionado tenta passar um fluxo infinito de bytes para o método GetEntity.This helps guard against situations where malicious code attempts to pass an infinite stream of bytes to the GetEntity method.

Construtores

XmlResolver()

Inicializa uma nova instância da classe XmlResolver.Initializes a new instance of the XmlResolver class.

Propriedades

Credentials

Quando substituído em uma classe derivada, define as credenciais usadas para autenticar solicitações da Web.When overridden in a derived class, sets the credentials used to authenticate web requests.

Métodos

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.Determines whether the specified object is equal to the current object.

(Herdado de Object)
GetEntity(Uri, String, Type)

Quando substituído em uma classe derivada, mapeia um URI para um objeto que contém o recurso real.When overridden in a derived class, maps a URI to an object that contains the actual resource.

GetEntityAsync(Uri, String, Type)

Mapeia de forma assíncrona um URI para um objeto que contém o recurso real.Asynchronously maps a URI to an object that contains the actual resource.

GetHashCode()

Serve como a função de hash padrão.Serves as the default hash function.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.Gets the Type of the current instance.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do Object atual.Creates a shallow copy of the current Object.

(Herdado de Object)
ResolveUri(Uri, String)

Quando substituído em uma classe derivada, resolve o URI absoluto dos URIs base e relativo.When overridden in a derived class, resolves the absolute URI from the base and relative URIs.

SupportsType(Uri, Type)

Habilita o resolvedor para tipos de retorno diferentes de Stream.Enables the resolver to return types other than Stream.

ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.Returns a string that represents the current object.

(Herdado de Object)

Aplica-se a

Veja também