Partilhar via


Resolução de recursos externos

A propriedade XmlResolver do XmlDocument é usada pela classe XmlDocument para localizar recursos que não estão embutidos nos dados XML, como DTDs (definições de tipo de documento externo), entidades e esquemas. Esses itens podem estar localizados em uma rede ou em uma unidade local e são identificáveis por um URI (Uniform Resource Identifier). Isso permite que o XmlDocument resolva nós EntityReference que estão presentes no documento e valide o documento de acordo com o DTD ou esquema externo.

XmlDocument totalmente confiável

A propriedade XmlResolver afeta a funcionalidade do método XmlDocument.Load . A tabela abaixo mostra como a propriedade XmlDocument.XmlResolver funciona quando o objeto XmlDocument é totalmente confiável. A tabela a seguir mostra os métodos XmlDocument.Load quando a entrada para o Load é um TextReader, String, Stream ou URI. Esta tabela não se aplica ao método Load se o XmlDocument for carregado de um XmlReader.

XmlResolver propriedade Function Notas
A propriedade é definida como uma classe XmlResolver que foi criada anteriormente e tem propriedades já definidas nela pelo usuário. O XmlDocument usa o XmlResolver que é dado para resolver nomes de arquivo, para resolver referências a recursos externos, como DTDs, entidades e esquemas.

O XmlResolver também é usado ao resolver recursos externos que são necessários ao adicionar ou editar nós no XmlDocument.
O XmlResolver dado ao XmlDocument é o resolvedor que é usado sempre que recursos externos precisam ser localizados e resolvidos.
A propriedade é definida como null (Nothing no Microsoft Visual Basic .NET). Não há suporte para recursos que exigem um recurso externo, como a localização de um esquema externo ou DTD. As entidades externas também não serão resolvidas e a execução de funções de edição, como a inserção de nós de entidade que exigem resolução, não é suportada. O XmlDocument carrega arquivos como anônimos e não tenta resolver quaisquer outros recursos.
A propriedade não é definida, mas deixada em seu estado padrão. Um XmlUrlResolver com credenciais NULL será instanciado e usado pelo XmlDocument ao resolver nomes de arquivos, localizar DTDs, entidades e esquemas externos, e credenciais nulas são usadas ao editar nós.

A tabela a seguir mostra o método XmlDocument.Load quando a entrada para o Load é um XmlReader e o XmlDocument é totalmente confiável.

XmlResolver propriedade Function Notas
A classe XmlResolver usada pelo XmlDocument é a mesma classe que está sendo usada pelo XmlReader. O XmlDocument usa o XmlResolver que foi atribuído ao XmlReader.

A propriedade XmlDocument.Resolver não pode ser definida, independentemente do nível de confiança XmlDocument , porque está obtendo um XmlResolver do XmlReader. Você não pode tentar substituir as configurações do XmlResolver do XmlReaders definindo a propriedade XmlResolver do XmlDocument.
O XmlReader pode ser o XmlTextReader, XmlValidatingReader ou um leitor personalizado. Se o leitor utilizado suportar a resolução de entidades, as entidades externas serão resolvidas. Se o leitor passado não suportar referências de entidade, as referências de entidade não serão resolvidas.

XmlDocument semi-confiável

A tabela a seguir mostra como a propriedade XmlDocument.XmlResolver funciona quando o objeto é semiconfiável. Esta tabela se aplica aos métodos XmlDocument.Load quando a entrada para o Load é um TextReader, String, Stream ou URI. Esta tabela não se aplica ao método Load se o XmlDocument for carregado de um XmlReader.

XmlResolver propriedade Function Notas
No cenário semiconfiável, a propriedade XmlResolver não pode ser definida como nada diferente de null. Um XmlUrlResolver com credenciais nulas será instanciado e usado pelo XmlDocument ao resolver nomes de arquivo, localizar DTDs, entidades e esquemas externos, e credenciais nulas são usadas ao editar nós. Esse comportamento é idêntico ao comportamento quando a propriedade XmlResolver não é definida, mas deixada em seu estado padrão.

O XmlDocument usa permissões anônimas para todas as ações.
A propriedade é definida como null (Nothing no Microsoft Visual Basic .NET). Não há suporte para recursos que exijam um recurso externo, como a localização de um esquema externo ou DTD. As entidades externas também não serão resolvidas, e a execução de funções de edição, como a inserção de nós de entidade que exigem resolução, não é suportada. Quando a propriedade é null, o comportamento é o mesmo, independentemente se o XmlDocument é totalmente confiável ou semiconfiável.
A propriedade não é definida, mas deixada em seu estado padrão. Um XmlUrlResolver com credenciais nulas será instanciado e usado pelo XmlDocument ao resolver nomes de arquivo, localizar DTDs, entidades e esquemas externos, e credenciais nulas são usadas ao editar nós. O XmlDocument usa permissões anônimas para todas as ações.

Esta tabela se aplica ao método XmlDocument.Load quando a entrada para o Load é um XmlReader e o XmlDocument é semiconfiável.

XmlResolver propriedade Function Notas
A classe XmlResolver usada pelo XmlDocument é a mesma que está sendo usada pelo XmlReader. O XmlDocument usa o XmlResolver que foi atribuído ao XmlReader.

A propriedade XmlDocument.Resolver não pode ser definida, independentemente do nível de confiança XmlDocument , porque está obtendo um XmlResolver do XmlReader. Você não pode tentar substituir as configurações do XmlReaders XmlResolver definindo a propriedade XmlResolver do XmlDocument.
O XmlReader pode ser o XmlTextReader, validando XmlReaderou um leitor personalizado. Se o leitor utilizado suportar a resolução de entidades, as entidades externas serão resolvidas. Se o leitor transmitido não suportar referências de entidade, as referências de entidade não serão resolvidas.

Definir o XmlResolver para conter as credenciais corretas permite o acesso a recursos externos.

Nota

Não é possível recuperar a propriedade XmlResolver . Isso ajuda a impedir que um usuário reutilize um XmlResolver no qual as credenciais foram definidas. Além disso, se um XmlTextReader ou validação XmlReader é usado para carregar o XmlDocument e o XmlDocument tem um resolvedor que foi definido, os resolvedores desses leitores não são armazenados em cache pelo XmlDocument após a fase de carregamento , pois isso também apresenta um risco de segurança.

Para obter mais informações, consulte a seção Comentários da XmlResolver página de referência.

Consulte também