Risoluzione di risorse esterne

La proprietà XmlResolver di XmlDocument viene utilizzata dalla classe XmlDocument per individuare le risorse non inline nei dati XML, quali DTD, entità e schemi esterni. Questi elementi possono trovarsi in una rete o in un'unità locale ed essere identificati tramite un URI. Questo consente a XmlDocument di risolvere i nodi EntityReference presenti nel documento e convalidare il documento in base allo schema o al DTD esterno.

XmlDocument completamente attendibile

La proprietà XmlResolver influisce sulla funzionalità del metodo XmlDocument.Load. Nella tabella che segue viene illustrato il funzionamento della proprietà XmlDocument.XmlResolver quando l'oggetto XmlDocument è completamente attendibile. Vengono inoltre indicati i metodi XmlDocument.Load quando l'input di Load è TextReader, String, Stream o URI. Il contenuto della tabella non si applica al metodo Load se XmlDocument viene caricato da XmlReader.

Proprietà XmlResolver Funzione Note
La proprietà è impostata su una classe XmlResolver precedentemente creata e con proprietà già impostate dall'utente. XmlDocument consente di utilizzare l'XmlResolver assegnato per risolvere nomi di file e riferimenti a risorse esterne, quali DTD, entità e schemi.

XmlResolver viene utilizzato anche quando si risolvono risorse esterne necessarie per l'aggiunta o la modifica di nodi in XmlDocument.

L'XmlResolver assegnato a XmlDocument è il sistema di risoluzione utilizzato quando è necessario individuare e risolvere le risorse esterne.
La proprietà è impostata su null (Nothing in VB.NET). Non sono supportate le funzionalità che richiedono una risorsa esterna, ad esempio l'individuazione di uno schema o DTD esterno. Le entità esterne non verranno risolte e non sarà supportata la modifica delle funzioni, come l'inserimento di nodi di entità che richiedono la risoluzione. XmlDocument consente di caricare i file come anonimi e non tenta di risolvere le altre risorse.
La proprietà non viene impostata, ma rimane nello stato predefinito. Verrà creata l'istanza di un XmlUrlResolver con credenziali NULL, che verrà utilizzato dall'XmlDocument durante la risoluzione di nomi di file e l'individuazione di DTD, entità e schemi esterni. Le credenziali null verranno utilizzate per la modifica dei nodi.    

Viene inoltre indicato il metodo XmlDocument.Load quando l'input di Load è XmlReader e XmlDocument è completamente attendibile.

Proprietà XmlResolver Funzione Note
La classe XmlResolver utilizzata dall'XmlDocument è la stessa utilizzata dall'XmlReader. L'XmlDocument consente di utilizzare l'XmlResolver assegnato all'XmlReader.

Non è possibile impostare la proprietà XmlDocument.Resolver, indipendentemente dal livello di attendibilità di XmlDocument, poiché ottiene un XmlResolver dall'XmlReader. Non è possibile eseguire l'override dell'XmlResolver di XmlReader impostando la proprietà XmlResolver dell'XmlDocument.

L'XmlReader può essere l'XmlTextReader, XmlValidatingReader o un visualizzatore personalizzato. Le entità esterne vengono risolte, se il visualizzatore utilizzato ne supporta la risoluzione. I riferimenti alle entità non vengono risolti se il visualizzatore passato non li supporta.

XmlDocument semi-trusted

Nella tabella che segue viene illustrato il funzionamento della proprietà XmlDocument.XmlResolver quando l'oggetto è semi-trusted. Il contenuto della tabella si applica ai metodi XmlDocument.Load quando l'input di Load è TextReader, String, Stream o URI. Il contenuto della tabella non si applica al metodo Load se XmlDocument viene caricato da XmlReader.

Proprietà XmlResolver Funzione Note
Nello scenario semi-trusted, è possibile impostare la proprietà XmlResolver solo su null. Verrà creata l'istanza di un XmlUrlResolver con credenziali null, che verrà utilizzato dall'XmlDocument durante la risoluzione di nomi di file e l'individuazione di DTD, entità e schemi esterni. Le credenziali null verranno utilizzate per la modifica dei nodi. Si verifica lo stesso comportamento quando la proprietà XmlResolver non viene impostata, ma rimane nello stato predefinito.

L'XmlDocument consente di utilizzare autorizzazioni anonime per tutte le azioni.

La proprietà è impostata su null (Nothing in VB.NET). Non è supportata alcuna funzionalità che richieda una risorsa esterna, ad esempio l'individuazione di uno schema o DTD esterno. Le entità esterne non verranno risolte e non sarà supportata la modifica delle funzioni, come l'inserimento di nodi di entità che richiedono la risoluzione. Quando la proprietà è null, si verifica lo stesso comportamento, indipendentemente dal fatto che l'XmlDocument sia completamente attendibile o semi-trusted.
La proprietà non viene impostata, ma rimane nello stato predefinito. Verrà creata l'istanza di un XmlUrlResolver con credenziali null, che verrà utilizzato dall'XmlDocument durante la risoluzione di nomi di file e l'individuazione di DTD, entità e schemi esterni. Le credenziali null verranno utilizzate per la modifica dei nodi. L'XmlDocument consente di utilizzare autorizzazioni anonime per tutte le azioni.

Il contenuto della tabella si applica al metodo XmlDocument.Load quando l'input di Load è XmlReader e XmlDocument è semi-trusted.

Proprietà XmlResolver Funzione Note
La classe XmlResolver utilizzata dall'XmlDocument è la stessa utilizzata dall'XmlReader. L'XmlDocument consente di utilizzare l'XmlResolver assegnato all'XmlReader.

Non è possibile impostare la proprietà XmlDocument.Resolver, indipendentemente dal livello di attendibilità di XmlDocument, poiché ottiene un XmlResolver dall'XmlReader. Non è possibile eseguire l'override dell'XmlResolver di XmlReader impostando la proprietà XmlResolver dell'XmlDocument.

L'XmlReader può essere l'XmlTextReader, XmlValidatingReader o un visualizzatore personalizzato. Le entità esterne vengono risolte, se il visualizzatore utilizzato ne supporta la risoluzione. I riferimenti alle entità non vengono risolti se il visualizzatore passato non li supporta.

In .NET Framework versione 1.0 e nello scenario completamente attendibile di .NET Framework versione 1.1, impostando l'XmlResolver in modo che contenga le credenziali corrette, sarà possibile accedere alle risorse esterne.

Nota   Non vi è modo di recuperare la proprietà XmlResolver. In questo modo si impedisce all'utente di riutilizzare un XmlResolver sul quale sono state impostate le credenziali di sicurezza. Inoltre, se viene utilizzato XmlTextReader o XmlValidatingReader per caricare l'XmlDocument e quest'ultimo ha un sistema di risoluzione impostato, i sistemi di risoluzione di questi lettori non vengono memorizzati nella cache dall'XmlDocument dopo la fase Load, in quanto anche questa operazione presenta un rischio per la sicurezza.

Per ulteriori informazioni, vedere Risoluzione delle risorse mediante XmlResolver.

Vedere anche

Modello a oggetti di documenti XML (Document Object Model, DOM)