XmlResolver Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Résout les ressources XML externes nommées par un URI (Uniform Resource Identifier).
public ref class XmlResolver abstract
public abstract class XmlResolver
type XmlResolver = class
Public MustInherit Class XmlResolver
- Héritage
-
XmlResolver
- Dérivé
Exemples
L’exemple suivant crée un XmlUrlResolver avec des informations d’identification par défaut. Il XmlReader est utilisé pour lire et afficher le flux de données résultant.
using System;
using System.Xml;
using System.IO;
class Example
{
static void Main()
{
// Create an XmlUrlResolver with default credentials.
XmlUrlResolver resolver = new XmlUrlResolver();
resolver.Credentials = System.Net.CredentialCache.DefaultCredentials;
// Point the resolver at the desired resource and resolve as a stream.
Uri baseUri = new Uri("http://serverName/");
Uri fulluri = resolver.ResolveUri(baseUri, "fileName.xml");
Stream s = (Stream)resolver.GetEntity(fulluri, null, typeof(Stream));
// Create the reader with the resolved stream and display the data.
XmlReader reader = XmlReader.Create(s);
while (reader.Read())
{
Console.WriteLine(reader.ReadOuterXml());
}
}
}
Imports System.Xml
Imports System.IO
Module Module1
Sub Main()
' Create an XmlUrlResolver with default credentials.
Dim resolver As New XmlUrlResolver()
resolver.Credentials = System.Net.CredentialCache.DefaultCredentials
' Point the resolver at the desired resource and resolve as a stream.
Dim baseUri As New Uri("http://serverName/")
Dim fulluri As Uri = resolver.ResolveUri(baseUri, "fileName.xml")
Dim s As Stream = CType(resolver.GetEntity(fulluri, Nothing, GetType(Stream)), Stream)
' Create the reader with the resolved stream and display the data.
Dim reader As XmlReader = XmlReader.Create(s)
While reader.Read()
Console.WriteLine(reader.ReadOuterXml())
End While
End Sub
End Module
Remarques
Le XmlResolver type est utilisé pour résoudre des ressources XML externes, telles que des entités, des définitions de type de document (DTD) ou des schémas. Il est également utilisé pour traiter les éléments inclus et importés dans les feuilles de style XSL (Extensible Stylesheet Language) ou les schémas XSD (XML Schema Definition Language).
XmlResolver gère tous les aspects de la négociation de la connexion aux ressources, notamment la gestion des informations d’identification de sécurité, l’ouverture de la connexion à la source de données et le renvoi de la ressource sous la forme d’un flux ou d’un autre type d’objet. L’objet qui appelle XmlResolver a la tâche d’interpréter le flux.
L’espace System.Xml de noms inclut l’implémentation concrète suivante de la XmlResolver classe :
-
XmlUrlResolver est le programme de résolution par défaut pour toutes les classes dans l'espace de noms System.Xml. Il prend en charge les protocoles
file://et les requêteshttp://de la classe System.Net.WebRequest. Pour obtenir des exemples d’extension de la classe pour améliorer les performances, consultez la XmlUrlResolver page de référence.
Vous pouvez créer et spécifier votre propre programme de résolution. Si vous ne spécifiez pas de programme de résolution, le lecteur utilise une valeur par défaut XmlUrlResolver sans informations d’identification utilisateur.
Vous spécifiez la XmlResolver valeur à utiliser en définissant la XmlReaderSettings.XmlResolver propriété et en transmettant l’objet XmlReaderSettings à la Create méthode.
Si la ressource est stockée sur un système qui nécessite une authentification, vous utilisez la XmlResolver.Credentials propriété pour spécifier les informations d’identification nécessaires.
Fournir des informations d'authentification
Le fichier qui contient les données XML à lire peut avoir une stratégie d’accès restreint. Si l’authentification est requise pour accéder à une ressource réseau, utilisez la Credentials propriété pour spécifier les informations d’identification nécessaires. Si la Credentials propriété n’est pas définie, les informations d’identification sont définies sur null.
Par exemple, supposons que les informations d’identification sont nécessaires lors de la demande de données à partir du web à des fins d’authentification. Sauf si le répertoire virtuel web autorise l’accès anonyme, vous devez définir la Credentials propriété pour fournir des informations d’identification. L’exemple suivant crée un XmlReader objet qui utilise des XmlUrlResolver informations d’identification par défaut pour accéder au http://localhost/bookstore/inventory.xml site.
// 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("http://ServerName/data/books.xml", settings);
' 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("http://ServerName/data/books.xml", settings)
Vous pouvez fournir différentes informations d’identification pour différentes URI et les ajouter à un cache. Ces informations d’identification sont utilisées pour vérifier l’authentification des différentes URI, quelle que soit la source d’origine du code XML. L’exemple suivant montre comment ajouter des informations d’identification à un cache.
// Create the credentials.
NetworkCredential myCred = new NetworkCredential(UserName,SecurelyStoredPassword,Domain);
CredentialCache myCache = new CredentialCache();
myCache.Add(new Uri("http://www.contoso.com/"), "Basic", myCred);
myCache.Add(new Uri("http://app.contoso.com/"), "Basic", myCred);
// Set the credentials on the XmlUrlResolver object.
XmlUrlResolver resolver = new XmlUrlResolver();
resolver.Credentials = myCache;
// Compile the style sheet.
XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load("http://serverName/data/xsl/order.xsl",XsltSettings.Default, resolver);
' Create the credentials.
Dim myCred As NetworkCredential = New NetworkCredential(UserName,SecurelyStoredPassword,Domain)
Dim myCache As CredentialCache = New CredentialCache()
myCache.Add(new Uri("http://www.contoso.com/"), "Basic", myCred)
myCache.Add(new Uri("http://app.contoso.com/"), "Basic", myCred)
' Set the credentials on the XmlUrlResolver object.
Dim resolver As XmlUrlResolver = New XmlUrlResolver()
resolver.Credentials = myCache
' Compile the style sheet.
Dim xslt As XslCompiledTransform = New XslCompiledTransform()
xslt.Load("http://serverName/data/xsl/order.xsl", XsltSettings.Default, resolver)
Considérations relatives à la sécurité
Tenez compte des éléments suivants lors de l’utilisation de la XmlResolver classe.
XmlResolver les objets peuvent contenir des informations sensibles telles que des informations d’identification utilisateur. Vous devez être prudent lors de la mise en cache d’objets XmlResolver et ne doit pas passer l’objet XmlResolver à un composant non approuvé.
Si vous concevez une propriété de classe qui utilise la XmlResolver classe, la propriété doit être définie en tant que propriété en écriture seule. La propriété peut être utilisée pour spécifier la XmlResolver valeur à utiliser, mais elle ne peut pas être utilisée pour retourner un XmlResolver objet.
Si votre application accepte XmlResolver des objets provenant d’un code non approuvé, vous ne pouvez pas supposer que l’URI passé dans la GetEntity méthode sera identique à celui retourné par la ResolveUri méthode. Les classes dérivées de la XmlResolver classe peuvent remplacer la GetEntity méthode et retourner des données différentes de celles contenues dans l’URI d’origine.
Votre application peut atténuer les menaces de déni de service de mémoire à la GetEntity méthode en implémentant un IStream paramètre qui limite le nombre d’octets lus. Cela permet de se protéger contre les situations où le code malveillant tente de transmettre un flux infini d’octets à la GetEntity méthode.
Constructeurs
| Nom | Description |
|---|---|
| XmlResolver() |
Initialise une nouvelle instance de la classe XmlResolver. |
Propriétés
| Nom | Description |
|---|---|
| Credentials |
En cas de substitution dans une classe dérivée, définit les informations d’identification utilisées pour authentifier les requêtes web. |
| FileSystemResolver |
Obtient un programme de résolution XML qui résout uniquement les URI du système de fichiers. |
| ThrowingResolver |
Obtient un programme de résolution XML qui interdit la résolution d’entité. |
Méthodes
| Nom | Description |
|---|---|
| Equals(Object) |
Détermine si l’objet spécifié est égal à l’objet actuel. (Hérité de Object) |
| GetEntity(Uri, String, Type) |
En cas de substitution dans une classe dérivée, mappe un URI à un objet qui contient la ressource réelle. |
| GetEntityAsync(Uri, String, Type) |
Mappe de façon asynchrone un URI à un objet qui contient la ressource réelle. |
| GetHashCode() |
Sert de fonction de hachage par défaut. (Hérité de Object) |
| GetType() |
Obtient la Type de l’instance actuelle. (Hérité de Object) |
| MemberwiseClone() |
Crée une copie superficielle du Objectactuel. (Hérité de Object) |
| ResolveUri(Uri, String) |
En cas de substitution dans une classe dérivée, résout l’URI absolu de la base et des URI relatifs. |
| SupportsType(Uri, Type) |
Permet au programme de résolution de retourner des types autres que Stream. |
| ToString() |
Retourne une chaîne qui représente l’objet actuel. (Hérité de Object) |