XmlResolver XmlResolver XmlResolver XmlResolver Class

Definizione

Risolve risorse XML esterne denominate da un URI (Uniform Resource Identifier).Resolves external XML resources named by a Uniform Resource Identifier (URI).

public ref class XmlResolver abstract
public abstract class XmlResolver
type XmlResolver = class
Public MustInherit Class XmlResolver
Ereditarietà
XmlResolverXmlResolverXmlResolverXmlResolver
Derivato

Esempi

Nell'esempio seguente viene creato XmlUrlResolver un oggetto con le credenziali predefinite.The following example creates an XmlUrlResolver with default credentials. XmlReader Viene usato per leggere e visualizzare il flusso di dati risultante.A XmlReader is used to read and display the resulting data stream.

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

Commenti

Il XmlResolver tipo viene utilizzato per risolvere le risorse XML esterne, ad esempio le entità, le definizioni dei tipi di documento (DTD) o gli schemi.The XmlResolver type is used to resolve external XML resources, such as entities, document type definitions (DTDs), or schemas. Viene inoltre utilizzato per elaborare gli elementi di inclusione e importazione trovati nei fogli di stile Extensible Stylesheet Language (XSL) o negli schemi XSD (XML Schema Definition Language).It is also used to process include and import elements found in Extensible Stylesheet Language (XSL) style sheets or XML Schema definition language (XSD) schemas.

XmlResolvergestisce tutti gli aspetti della negoziazione della connessione alle risorse, inclusa la gestione delle credenziali di sicurezza, l'apertura della connessione all'origine dati e la restituzione della risorsa sotto forma di flusso o di altro tipo di oggetto.XmlResolver handles all aspects of negotiating the connection to the resources, including handling security credentials, opening the connection to the data source, and returning the resource in the form of a stream or other object type. L'oggetto che chiama XmlResolver ha la funzione di interpretare il flusso.The object that calls XmlResolver has the task of interpreting the stream.

Lo System.Xml spazio dei nomi include due implementazioni concrete XmlResolver della classe:The System.Xml namespace includes two concrete implementations of the XmlResolver class:

  • XmlUrlResolverè il sistema di risoluzione predefinito per tutte le System.Xml classi nello spazio dei nomi.XmlUrlResolver is the default resolver for all classes in the System.Xml namespace. Supporta i protocolli file:// e http:// e le richieste dalla classe System.Net.WebRequest.It supports the file:// and http:// protocols and requests from the System.Net.WebRequest class. Per esempi di estensione della classe per migliorare le prestazioni, vedere XmlUrlResolver la pagina di riferimento.For examples of extending the class to improve performance, see the XmlUrlResolver reference page.

  • XmlSecureResolverconsente di proteggere XmlResolver un altro oggetto eseguendo il wrapping dell'oggetto e limitando le risorse a cui può accedere.XmlSecureResolver helps secure another XmlResolver object by wrapping the object and restricting the resources that it can access. Ad esempio, XmlSecureResolver può impedire l'accesso a siti o zone Internet specifiche.For example, the XmlSecureResolver can prohibit access to specific Internet sites or zones.

È possibile creare e specificare un resolver personalizzato.You can create and specify your own resolver. Se non si specifica un resolver, il Reader usa un valore XmlUrlResolver predefinito senza credenziali utente.If you don't specify a resolver, the reader uses a default XmlUrlResolver with no user credentials.

È possibile specificare il tipo XmlResolver da utilizzare impostando la proprietà XmlReaderSettings.XmlResolver e passando l'oggetto XmlReaderSettings al metodo Create.You specify the XmlResolver to use by setting the XmlReaderSettings.XmlResolver property and passing the XmlReaderSettings object to the Create method.

Se la risorsa è archiviata in un sistema che richiede l'autenticazione, utilizzare XmlResolver.Credentials la proprietà per specificare le credenziali necessarie.If the resource is stored on a system that requires authentication, you use the XmlResolver.Credentials property to specify the necessary credentials.

Immissione delle credenziali di autenticazioneSupplying authentication credentials

Il file che contiene i dati XML da leggere può disporre di un criterio di accesso limitato.The file that contains the XML data to read may have a restricted access policy. Se per accedere a una determinata risorsa di rete è necessaria l'autenticazione, utilizzare la proprietà Credentials per specificare le credenziali richieste.If authentication is required to access a network resource, use the Credentials property to specify the necessary credentials. Se la Credentials proprietà non è impostata, le credenziali vengono impostate nullsu.If the Credentials property is not set, credentials are set to null.

Si supponga, ad esempio, che le credenziali siano necessarie per la richiesta di dati dal Web ai fini dell'autenticazione.For example, assume that credentials are needed when requesting data from the web for authentication purposes. A meno che la directory virtuale web non consenta l'accesso anonimo, Credentials è necessario impostare la proprietà per fornire le credenziali.Unless the web virtual directory allows anonymous access, you must set the Credentials property to supply credentials. Nell'esempio seguente viene creato XmlReader un oggetto che utilizza XmlUrlResolver un con credenziali predefinite per accedere http://localhost/bookstore/inventory.xml al sito.The following example creates an XmlReader object that uses an XmlUrlResolver with default credentials to access the http://localhost/bookstore/inventory.xml site.

// 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"http://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("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)

È possibile specificare credenziali diverse per diversi URI e aggiungerle a una cache.You can supply different credentials for different URIs and add them to a cache. Queste credenziali sono utilizzate per verificare l'autenticazione dei diversi URI, indipendentemente dall'origine dell'XML.These credentials are used to check authentication for the different URIs regardless of the original source of the XML. Nell'esempio seguente viene illustrato come aggiungere credenziali a una cache.The following example shows how to add credentials to a 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)

Considerazioni sulla sicurezzaSecurity considerations

Quando si utilizza la XmlResolver classe, considerare gli elementi seguenti.Consider the following items when working with the XmlResolver class.

  • Gli oggetti XmlResolver possono contenere informazioni sensibili quali le credenziali utente.XmlResolver objects can contain sensitive information such as user credentials. È necessario prestare attenzione quando si memorizzano nella cache XmlResolver gli oggetti e non è necessario passare l' XmlResolver oggetto a un componente non attendibile.You should be careful when caching XmlResolver objects and should not pass the XmlResolver object to an untrusted component.

  • Se si progetta una proprietà della classe in cui viene utilizzata la classe XmlResolver, è necessario definire tale proprietà come proprietà di sola scrittura.If you are designing a class property that uses the XmlResolver class, the property should be defined as a write-only property. La proprietà può essere specificata in modo tale che venga utilizzata dal tipo XmlResolver, tuttavia non può essere utilizzata per restituire un oggetto XmlResolver.The property can be used to specify the XmlResolver to use, but it cannot be used to return an XmlResolver object.

  • Se l'applicazione accetta XmlResolver oggetti da codice non attendibile, non è possibile presupporre che l'URI passato GetEntity nel metodo sarà uguale ResolveUri a quello restituito dal metodo.If your application accepts XmlResolver objects from untrusted code, you cannot assume that the URI passed into the GetEntity method will be the same as that returned by the ResolveUri method. Le classi derivate dalla classe XmlResolver consentono di ignorare il metodo GetEntity e di restituire dati diversi da quelli contenuti nell'URI originale.Classes derived from the XmlResolver class can override the GetEntity method and return data that is different than what was contained in the original URI.

  • L'applicazione può attenuare le GetEntity minacce di tipo Denial of Service da parte della memoria al metodo implementando un oggetto IStream che limita il numero di byte letti.Your application can mitigate memory denial of service threats to the GetEntity method by implementing an IStream that limits the number of bytes read. Questo consente di evitare situazioni in cui il GetEntity codice dannoso tenta di passare un flusso infinito di byte al metodo.This helps guard against situations where malicious code attempts to pass an infinite stream of bytes to the GetEntity method.

Costruttori

XmlResolver() XmlResolver() XmlResolver() XmlResolver()

Inizializza una nuova istanza della classe XmlResolver.Initializes a new instance of the XmlResolver class.

Proprietà

Credentials Credentials Credentials Credentials

Quando ne viene eseguito l'override in una classe derivata, imposta le credenziali usate per autenticare le richieste Web.When overridden in a derived class, sets the credentials used to authenticate web requests.

Metodi

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetEntity(Uri, String, Type) GetEntity(Uri, String, Type) GetEntity(Uri, String, Type) GetEntity(Uri, String, Type)

Quando ne viene eseguito l'override in una classe derivata, esegue il mapping di un URI a un oggetto che contiene la risorsa effettiva.When overridden in a derived class, maps a URI to an object that contains the actual resource.

GetEntityAsync(Uri, String, Type) GetEntityAsync(Uri, String, Type) GetEntityAsync(Uri, String, Type) GetEntityAsync(Uri, String, Type)

Esegue in modo asincrono il mapping di un URI a un oggetto contenente la risorsa effettiva.Asynchronously maps a URI to an object that contains the actual resource.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Funge da funzione hash predefinita.Serves as the default hash function.

(Inherited from Object)
GetType() GetType() GetType() GetType()

Ottiene l'oggetto Type dell'istanza corrente.Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.Creates a shallow copy of the current Object.

(Inherited from Object)
ResolveUri(Uri, String) ResolveUri(Uri, String) ResolveUri(Uri, String) ResolveUri(Uri, String)

Quando sottoposto a override in una classe derivata, risolve l'URI assoluto dagli URI di base e relativi.When overridden in a derived class, resolves the absolute URI from the base and relative URIs.

SupportsType(Uri, Type) SupportsType(Uri, Type) SupportsType(Uri, Type) SupportsType(Uri, Type)

Consente al resolver di restituire tipi diversi da Stream.Enables the resolver to return types other than Stream.

ToString() ToString() ToString() ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.Returns a string that represents the current object.

(Inherited from Object)

Si applica a

Vedi anche