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.