Résolution de ressources à l'aide de XmlResolver
La classe XmlReader utilise l'objet XmlResolver pour résoudre des DTD, des entités et des schémas externes. La classe XmlReader utilise un XmlUrlResolver sans informations d'identification des utilisateurs par défaut. Pour spécifier l'objet XmlResolver à utiliser, définissez la propriété XmlResolver et transmettez l'objet XmlReaderSettings à la méthode Create.
Le code suivant crée une instance de l'objet XmlReader qui utilise un objet XmlUrlResolver avec les informations d'identification par défaut.
' 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 );
Si le fichier books.xml contenait une DTD externe, le XmlReader la gère de la manière suivante. Pour résoudre une DTD, XmlReader appelle la méthode GetEntity pour obtenir une représentation de flux de l'entité. Si l'URI de la DTD est un URI relatif, l'objet XmlReader appelle la méthode ResolveUri et retourne un URI absolu pour les relativeUri et baseUri donnés. Si l'objet XmlUrlResolver ne sait pas comment résoudre l'URI donné, il retourne une référence null.
La méthode GetEntity utilise les informations de la propriété Credentials de manière appropriée pour pouvoir accéder à la ressource. Il n'existe aucun accesseur get à cette propriété pour des raisons de sécurité. En cas de remplacement de l'objet XmlResolver, la méthode GetEntity utilise les informations d'identification de la propriété Credentials.
La résolution de toutes les autres ressources XML est très similaire à celle des DTD. L'objet XmlResolver ne doit connaître que la manière de négocier la connexion à la ressource externe et retourne une représentation de flux du contenu. C'est l'objet qui appelle l'objet XmlResolver, dont la tâche consiste à interpréter le flux.
Voir aussi
Concepts
Fourniture d'informations d'authentification à XmlResolver lors de la lecture à partir d'un fichier
Accès à des ressources externes pour l'objet XmlReader
Résolution de ressources externes lors du traitement XSLT