Risoluzione delle risorse mediante XmlResolver

La classe XmlValidatingReader utilizza XmlResolver per risolvere i DTD esterni, le entità e gli schemi. Per risolvere queste risorse esterne, è necessario impostare la proprietà XmlResolver in XmlValidatingReader. Nell'esempio seguente viene illustrato come impostare il sistema di risoluzione per una risorsa DTD esterna utilizzata da XmlValidatingReader.

dim vreader as New
   XmlValidatingReader("http://www.alpineskihouse.org/abc.xml")
dim resolver As new XmlUrlResolver()
vreader.XmlResolver = resolver
while vreader.Read
    . . . 
End While
[C#]
XmlValidatingReader vreader =           
    newXmlValidatingReader("http://www.alpineskihouse.org/abc.xml");
vreader.XmlResolver = new XmlUrlResolver();
while(Reader.read())
   {
       . . . 
   }

Per risolvere un DTD, XmlValidatingReader richiama il metodo GetEntity così da ottenere una rappresentazione di flusso dell'entità. Se l'URI del DTD è relativo, XmlValidatingReader richiama il metodo ResolveUri e restituisce un URI assoluto per il relativeUri e il baseUriforniti. Se XmlResolver non è in grado di risolvere l'URI fornito, viene restituito un riferimento null.

Inoltre, se sono necessarie impostazioni di protezione per accedere alla risorsa esterna, è possibile impostare la proprietà Credentials di conseguenza. Tale proprietà implementa l'interfaccia ICredentials e consente di impostare le opzioni di autenticazione per gli URI. Per ulteriori informazioni su come fornire le credenziali, vedere Implementazione delle credenziali di autenticazione in XmlResolver quando si esegue la lettura da un file.

Il metodo GetEntity in XmlUrlResolver utilizza le informazioni contenute nella proprietà Credentials secondo necessità per ottenere l'accesso alla risorsa. Per motivi di sicurezza, non è possibile accedere a questa proprietà tramite la funzione di accesso get. Quando si sovrascrive XmlResolver, GetEntity è il metodo che utilizza le informazioni delle credenziali nella proprietà Credentials.

Se non si specifica una proprietà XmlResolver da utilizzare con XmlValidatingReader, viene creata una proprietà XmlUrlResolver predefinita e vengono utilizzate credenziali null.

Il metodo di risoluzione di tutte le altre risorse XML è molto simile a quello utilizzato per risolvere i DTD. È sufficiente che XmlResolver sappia come negoziare la connessione con la risorsa esterna e come restituire una rappresentazione di flusso del contenuto. È l'oggetto che effettua la chiamata a XmlResolver che ha il compito di interpretare il flusso.

Vedere anche

Risoluzione di risorse XML esterne specificate da un URI | Implementazione delle credenziali di autenticazione in XmlResolver quando si esegue la lettura da un file | Creazione di un risolutore personalizzato