Classe XmlResolver (System.Xml)

Cambia visualizzazione:
ScriptFree
Riferimento a .NET Framework
Classe XmlResolver
Il presente articolo è stato tradotto manualmente. Per visualizzare questa pagina e contemporaneamente visualizzarne il contenuto in lingua inglese, passare alla visualizzazione semplificata.

Risolve risorse XML esterne denominate da un URI (Uniform Resource Identifier).

Gerarchia di ereditarietà

System.Object
  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)
Sintassi

Visual Basic
Public MustInherit Class XmlResolver
C#
public abstract class XmlResolver
Visual C++
public ref class XmlResolver abstract
F#
[<AbstractClass>]
type XmlResolver =  class end

Il tipo XmlResolver espone i seguenti membri.

Costruttori

  Nome Descrizione
Metodo protetto Supportato da XNA Framework XmlResolver Inizializza una nuova istanza della classe XmlResolver.
In alto
Proprietà

  Nome Descrizione
Proprietà pubblica Supportato da XNA Framework Credentials Quando sottoposto a override in una classe derivata, imposta le credenziali utilizzate per autenticare richieste Web.
Proprietà pubblica Supportato da XNA Framework NameTable Obsoleta. Obsoleto
In alto
Metodi

  Nome Descrizione
Metodo pubblico Supportato da XNA Framework Equals(Object) Determina se l'oggetto Object specificato è uguale all'oggetto Object corrente. (Ereditato da Object)
Metodo protetto Supportato da XNA Framework 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)
Metodo pubblico Supportato da XNA Framework GetEntity Quando sottoposto a override in una classe derivata, mappa un URI a un oggetto che contiene la risorsa effettiva.
Metodo pubblico Supportato da XNA Framework GetHashCode Funge da funzione hash per un determinato tipo. (Ereditato da Object)
Metodo pubblico Supportato da XNA Framework GetType Ottiene l'oggetto Type dell'istanza corrente. (Ereditato da Object)
Metodo protetto Supportato da XNA Framework MemberwiseClone Consente di creare una copia dei riferimenti dell'oggetto Object corrente. (Ereditato da Object)
Metodo pubblico Supportato da XNA Framework ResolveUri Quando sottoposto a override in una classe derivata, risolve l'URI assoluto dagli URI di base e relativi.
Metodo pubblico SupportsType Tale metodo aggiunge la possibilità affinché il resolver restituisca altri tipi anziché solo Stream.
Metodo pubblico Supportato da XNA Framework ToString Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object)
In alto
Note

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.

Esempi

Nell'esempio seguente viene creato un oggetto XmlUrlResolver con credenziali predefinite. Viene utilizzato XmlReader per leggere e visualizzare il flusso di dati risultante.

Visual Basic

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


C#

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());
        }
    }
}


Informazioni sulla versione

.NET Framework

Supportato in: 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supportato in: 4, 3.5 SP1
Piattaforme

Windows 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.
Codice thread safe

Qualsiasi membro static (Shared in Visual Basic) pubblico di questo tipo è thread-safe. I membri di istanza non sono garantiti come thread-safe.
Vedere anche

Riferimenti

Altre risorse