Risolve risorse XML esterne denominate da un URI (Uniform Resource Identifier).
System.Xml.XmlResolver
System.Xml.Resolvers.XmlPreloadedResolver
System.Xml.XmlSecureResolver
System.Xml.XmlUrlResolver
Spazio dei nomi: System.Xml
Assembly: System.Xml (in System.Xml.dll)
Public MustInherit Class XmlResolver
public abstract class XmlResolver
public ref class XmlResolver abstract
[<AbstractClass>] type XmlResolver = class end
Il tipo XmlResolver espone i seguenti membri.
| Nome | Descrizione | |
|---|---|---|
|
XmlResolver | Inizializza una nuova istanza della classe XmlResolver. |
| Nome | Descrizione | |
|---|---|---|
|
Credentials | Quando sottoposto a override in una classe derivata, imposta le credenziali utilizzate per autenticare richieste Web. |
|
NameTable | Obsoleta. Obsoleto |
| Nome | Descrizione | |
|---|---|---|
|
Equals(Object) | Determina se l'oggetto Object specificato è uguale all'oggetto Object corrente. (Ereditato da Object) |
|
Finalize | Consente a un oggetto di provare a liberare risorse ed eseguire altre operazioni di pulitura prima che l'oggetto stesso venga recuperato dalla procedura di Garbage Collection. (Ereditato da Object) |
|
GetEntity | Quando sottoposto a override in una classe derivata, mappa un URI a un oggetto che contiene la risorsa effettiva. |
|
GetHashCode | Funge da funzione hash per un determinato tipo. (Ereditato da Object) |
|
GetType | Ottiene l'oggetto Type dell'istanza corrente. (Ereditato da Object) |
|
MemberwiseClone | Consente di creare una copia dei riferimenti dell'oggetto Object corrente. (Ereditato da Object) |
|
ResolveUri | Quando sottoposto a override in una classe derivata, risolve l'URI assoluto dagli URI di base e relativi. |
|
SupportsType | Tale metodo aggiunge la possibilità affinché il resolver restituisca altri tipi anziché solo Stream. |
|
ToString | Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object) |
L'oggetto XmlResolver viene utilizzato per risolvere risorse XML esterne, quali entità, DTD (Document Type Definition) o schemi, nonché per elaborare elementi di inclusione e importazioni presenti in fogli di stile XSL (Extensible StyleSheet Language) o schemi XSD (XML Schema Definition Language).
L'oggetto XmlUrlResolver è un'implementazione concreta di XmlResolver e corrisponde al sistema di risoluzione predefinito per tutte le classi dello spazio dei nomi System.Xml. È anche possibile creare un sistema di risoluzione personalizzato.
Considerazioni sulla sicurezza
Quando si utilizza la classe XmlResolver è opportuno tenere presenti gli elementi riportati di seguito.
-
Gli oggetti XmlResolver possono contenere informazioni riservate, ad esempio le credenziali dell'utente. Quando vengono memorizzati nella cache oggetti XmlResolver, è opportuno prestare la massima attenzione ed evitare di passare l'oggetto XmlResolver a un componente non attendibile.
-
Se si progetta una proprietà di classe che utilizza la classe XmlResolver, la proprietà deve essere definita come di sola lettura. La proprietà può essere utilizzata per specificare l'oggetto XmlResolver da utilizzare, ma non per restituire un oggetto XmlResolver.
-
Se l'applicazione in uso accetta oggetti XmlResolver da codice non attendibile, l'URI passato nel metodo GetEntity non può essere lo stesso restituito dal metodo ResolveUri. Le classi derivate dalla classe XmlResolver possono eseguire l'override del metodo GetEntity e restituire dati diversi da quelli contenuti nell'URI originale.
-
L'applicazione può ridurre i rischi di "Denial of Service" della memoria al metodo GetEntity implementando un flusso IStream che limiti il numero dei byte letti. In questo modo, è possibile evitare i tentativi di passaggio di un flusso infinito di byte al metodo GetEntity da parte di codice dannoso.
Nell'esempio seguente viene creato un oggetto XmlUrlResolver con credenziali predefinite. Viene utilizzato XmlReader per leggere e visualizzare il flusso di dati risultante.
Imports System 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
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()); } } }
.NET Framework
Supportato in: 4, 3.5, 3.0, 2.0, 1.1, 1.0.NET Framework Client Profile
Supportato in: 4, 3.5 SP1Windows 7, Windows Vista SP1 o versione successiva, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (componenti di base del server non supportati), Windows Server 2008 R2 (componenti di base del server supportati con SP1 o versione successiva), Windows Server 2003 SP2
.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.