Condividi tramite


Risoluzione delle risorse mediante XmlResolver

La classe XmlReader utilizza XmlResolver per risolvere le DTD esterne, le entità e gli schemi. Per impostazione predefinita, la classe XmlReader utilizza un oggetto XmlUrlResolver privo di credenziali utente. È possibile specificare il tipo XmlResolver da utilizzare impostando la proprietà XmlResolver e passando l'oggetto XmlReaderSettings al metodo Create.

Il codice seguente crea un'istanza del tipo XmlReader che utilizza un tipo XmlUrlResolver con credenziali predefinite.

' 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("https://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("https://ServerName/data/books.xml", settings);
// 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"https://ServerName/data/books.xml", settings );

Il file books.xml contenente una DTD esterna viene gestito da XmlReader modo seguente. Per risolvere una DTD, XmlReader chiama il metodo GetEntity per ottenere una rappresentazione del flusso dell'entità. Se l'URI della DTD è relativo, XmlReader chiama il metodo ResolveUri e restituisce un URI assoluto per gli URI relativeUri e baseUri. Se XmlUrlResolver non è in grado di risolvere l'URI specificato, viene restituito un riferimento null.

Il metodo GetEntity utilizza le informazioni contenute nella proprietà Credentials in base alle 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 sulle credenziali nella proprietà Credentials.

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

Vedere anche

Concetti

Implementazione delle credenziali di autenticazione in XmlResolver quando si esegue la lettura da un file

Accesso a risorse esterne per XmlReader

Risoluzione delle risorse esterne durante l'elaborazione XSLT

Altre risorse

Risoluzione di risorse XML esterne specificate da un URI