XmlResolver XmlResolver XmlResolver XmlResolver Class

Definition

Löst externe XML-Ressourcen auf, die durch einen URI (Uniform Resource Identifier) benannt werden.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
Vererbung
XmlResolverXmlResolverXmlResolverXmlResolver
Abgeleitet

Beispiele

Das folgende Beispiel erstellt eine XmlUrlResolver mit Standardanmeldeinformationen.The following example creates an XmlUrlResolver with default credentials. Ein XmlReader dient zum Lesen und anzeigen den resultierende Datenstrom.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
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

Hinweise

Die XmlResolver Typ wird zum Auflösen von externer XML-Ressourcen, z. B. Entitäten, Dokumenttypdefinitionen (DTDs) oder Schemata verwendet.The XmlResolver type is used to resolve external XML resources, such as entities, document type definitions (DTDs), or schemas. Es wird auch verwendet, um Prozess Include- und Importelementen, die in Extensible Stylesheet Language (XSL)-Stylesheets oder Schemas für XML Schema Definition Language (XSD) zu finden.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.

XmlResolver behandelt alle Aspekte beim Aushandeln der Verbindungs mit die Ressourcen, einschließlich der Behandlung von Sicherheitseinstellungen, öffnen die Verbindung mit der Datenquelle und Zurückgeben der Ressource in Form von einem Stream oder anderen Objekttyp.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. Das Objekt, das Aufrufe XmlResolver hat die Aufgabe der Interpretation des Streams.The object that calls XmlResolver has the task of interpreting the stream.

Die System.Xml -Namespace umfasst zwei konkrete Implementierungen der XmlResolver Klasse:The System.Xml namespace includes two concrete implementations of the XmlResolver class:

  • XmlUrlResolver ist der Standardresolver für alle Klassen in der System.Xml Namespace.XmlUrlResolver is the default resolver for all classes in the System.Xml namespace. Sie unterstützt das file://-Protokoll und das http://-Protokoll und Anforderungen von der System.Net.WebRequest-Klasse.It supports the file:// and http:// protocols and requests from the System.Net.WebRequest class. Beispiele für die Erweiterung der Klasse zur Verbesserung der Leistung, finden Sie unter den XmlUrlResolver Referenzseite.For examples of extending the class to improve performance, see the XmlUrlResolver reference page.

  • XmlSecureResolver unterstützt schützen einen anderen XmlResolver Objekt durch Umschließen des Objekts und beschränken die Ressourcen, die darauf zugreifen können.XmlSecureResolver helps secure another XmlResolver object by wrapping the object and restricting the resources that it can access. Z. B. die XmlSecureResolver können den Zugriff auf bestimmte Internetsites oder Internetzonen verhindert werden soll.For example, the XmlSecureResolver can prohibit access to specific Internet sites or zones.

Sie können zu erstellen, und geben Ihr eigener Resolver.You can create and specify your own resolver. Wenn Sie einen Konfliktlöser nicht angeben, verwendet der Reader einen Standard- XmlUrlResolver ohne Benutzeranmeldeinformationen.If you don't specify a resolver, the reader uses a default XmlUrlResolver with no user credentials.

Sie geben den zu verwendenden XmlResolver an, indem Sie die XmlReaderSettings.XmlResolver-Eigenschaft festlegen und das XmlReaderSettings-Objekt an die Create-Methode übergeben.You specify the XmlResolver to use by setting the XmlReaderSettings.XmlResolver property and passing the XmlReaderSettings object to the Create method.

Wenn die Ressource auf einem System, die eine Authentifizierung erforderlich ist gespeichert ist, verwenden Sie die XmlResolver.Credentials Eigenschaft, um die erforderlichen Anmeldeinformationen angeben.If the resource is stored on a system that requires authentication, you use the XmlResolver.Credentials property to specify the necessary credentials.

Angeben von AuthentifizierungsinformationenSupplying authentication credentials

Die Datei, die zu lesenden XML-Daten enthält, möglicherweise zugriffsbeschränkungen.The file that contains the XML data to read may have a restricted access policy. Wenn für den Zugriff auf eine Netzwerkressource eine Authentifizierung erforderlich ist, geben Sie die erforderlichen Anmeldeinformationen mithilfe der Credentials-Eigenschaft an.If authentication is required to access a network resource, use the Credentials property to specify the necessary credentials. Wenn die Credentials Eigenschaft nicht festgelegt ist, Anmeldeinformationen werden festgelegt, um null.If the Credentials property is not set, credentials are set to null.

Nehmen wir beispielsweise an, dass Anmeldeinformationen, beim Anfordern von Daten aus dem Internet zum Zweck der Authentifizierung erforderlich sind.For example, assume that credentials are needed when requesting data from the web for authentication purposes. Wenn das virtuelle Verzeichnis der Website anonymen Zugriff zulässt, müssen Sie festlegen, die Credentials Eigenschaft, um Anmeldeinformationen bereitzustellen.Unless the web virtual directory allows anonymous access, you must set the Credentials property to supply credentials. Das folgende Beispiel erstellt eine XmlReader Objekt, das verwendet eine XmlUrlResolver mit Standardanmeldeinformationen für den Zugriff auf die http://localhost/bookstore/inventory.xml Standort.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)

Sie können unterschiedliche Anmeldeinformationen für unterschiedliche URIs angeben und auf einen Cache hinzufügen.You can supply different credentials for different URIs and add them to a cache. Anhand dieser Anmeldeinformationen wird die Authentifizierung für die unterschiedlichen URIs überprüft, ungeachtet der ursprünglichen Quelle des XML-Codes.These credentials are used to check authentication for the different URIs regardless of the original source of the XML. Das folgende Beispiel zeigt, wie Sie die Anmeldeinformationen für einen Cache hinzufügen.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)

SicherheitsüberlegungenSecurity considerations

Die folgenden Aspekte berücksichtigt werden, bei der Arbeit mit der XmlResolver Klasse.Consider the following items when working with the XmlResolver class.

  • XmlResolver-Objekte können vertrauliche Informationen (z. B. Anmeldeinformationen des Benutzers) enthalten.XmlResolver objects can contain sensitive information such as user credentials. Sollten Sie vorsichtig beim Zwischenspeichern von sein XmlResolver Objekte aus, und übergeben Sie die XmlResolver Objekt, das eine nicht vertrauenswürdige Komponente.You should be careful when caching XmlResolver objects and should not pass the XmlResolver object to an untrusted component.

  • Wenn Sie eine Klasseneigenschaft entwerfen, die die XmlResolver-Klasse verwendet, sollte die Eigenschaft als eine Nur-Schreiben-Eigenschaft (d. h. als lesegeschützt) definiert sein.If you are designing a class property that uses the XmlResolver class, the property should be defined as a write-only property. Mithilfe der Eigenschaft können Sie den zu verwendenden XmlResolver angeben. Sie können die Eigenschaft jedoch nicht zur Rückgabe eines XmlResolver-Objekts verwenden.The property can be used to specify the XmlResolver to use, but it cannot be used to return an XmlResolver object.

  • Wenn die Anwendung akzeptiert XmlResolver Objekten aus nicht vertrauenswürdigem Code, Sie nicht davon ausgehen, dass der URI übergebene der GetEntity Methode identisch, die von zurückgegeben werden die ResolveUri Methode.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. Von der XmlResolver-Klasse abgeleitete Klassen können die GetEntity-Methode überschreiben und Daten zurückgeben, die sich von den Daten unterscheiden, die im ursprünglichen URI enthalten waren.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.

  • Anwendung kann die Gefahr von DOS-Service-Angriffen für Arbeitsspeicher die GetEntity Methode durch die Implementierung einer IStream , die die Anzahl der gelesenen Bytes beschränkt.Your application can mitigate memory denial of service threats to the GetEntity method by implementing an IStream that limits the number of bytes read. Dadurch wird Schutz für Situationen dar, in denen bösartiger Code versucht, einen unendlichen Stream von Bytes, übergeben, die GetEntity Methode.This helps guard against situations where malicious code attempts to pass an infinite stream of bytes to the GetEntity method.

Konstruktoren

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

Initialisiert eine neue Instanz der XmlResolver-Klasse.Initializes a new instance of the XmlResolver class.

Eigenschaften

Credentials Credentials Credentials Credentials

Legt beim Überschreiben in einer abgeleiteten Klasse die zum Authentifizieren von Webanforderungen verwendeten Anmeldeinformationen fest.When overridden in a derived class, sets the credentials used to authenticate web requests.

Methoden

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

Bestimmt, ob das angegebene Objekt mit dem aktuellen Objekt identisch ist.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)

Weist beim Überschreiben in einer abgeleiteten Klasse einen URI einem Objekt zu, das die eigentliche Ressource enthält.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)

Ordnet einem Objekt, das die eigentliche Ressource enthält, asynchron einen URI zu.Asynchronously maps a URI to an object that contains the actual resource.

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

Fungiert als Standardhashfunktion.Serves as the default hash function.

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

Ruft den Type der aktuellen Instanz ab.Gets the Type of the current instance.

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

Erstellt eine flache Kopie des aktuellen Object.Creates a shallow copy of the current Object.

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

Löst beim Überschreiben in einer abgeleiteten Klasse den absoluten URI der Basis sowie relative URIs auf.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)

Erlaubt dem Resolver, andere Typen als Stream zurückzugeben.Enables the resolver to return types other than Stream.

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

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.Returns a string that represents the current object.

(Inherited from Object)

Gilt für:

Siehe auch