XmlResolver Klasse

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
XmlResolver
Abgeleitet

Beispiele

Im folgenden Beispiel wird ein XmlUrlResolver mit Standard Anmelde Informationen erstellt.The following example creates an XmlUrlResolver with default credentials. Ein XmlReader -Objekt wird verwendet, um den resultierenden Datenstrom zu lesen und anzuzeigen.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

Hinweise

Der XmlResolver -Typ wird verwendet, um externe XML-Ressourcen aufzulösen, wie z. b. Entitäten, Dokumenttyp Definitionen (DTDs) oder Schemas.The XmlResolver type is used to resolve external XML resources, such as entities, document type definitions (DTDs), or schemas. Sie wird auch zum Verarbeiten von include-und Import-Elementen verwendet, die in Extensible Stylesheet Language-Stylesheets (XSL) oder XSD-Schemas (XML Schema Definition Language) gefunden werden.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.

XmlResolverbehandelt alle Aspekte der Aushandlung der Verbindung mit den Ressourcen, einschließlich der Behandlung von Sicherheits Anmelde Informationen, dem Öffnen der Verbindung mit der Datenquelle und der Rückgabe der Ressource in Form eines Datenstroms oder eines anderen Objekt Typs.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 XmlResolver aufruft, hat die Aufgabe, den Stream zu interpretieren.The object that calls XmlResolver has the task of interpreting the stream.

Der System.Xml -Namespace enthält zwei konkrete Implementierungen XmlResolver der-Klasse:The System.Xml namespace includes two concrete implementations of the XmlResolver class:

  • XmlUrlResolverist der Standard Konflikt Löser für alle Klassen im 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, um die Leistung zu XmlUrlResolver verbessern, finden Sie auf der Referenzseite.For examples of extending the class to improve performance, see the XmlUrlResolver reference page.

  • XmlSecureResolverschützt ein anderes XmlResolver Objekt, indem das Objekt umwickelt und die Ressourcen eingeschränkt werden, auf die es zugreifen kann.XmlSecureResolver helps secure another XmlResolver object by wrapping the object and restricting the resources that it can access. Beispielsweise kann der XmlSecureResolver Zugriff auf bestimmte Internet Sites oder Zonen nicht zulassen.For example, the XmlSecureResolver can prohibit access to specific Internet sites or zones.

Sie können einen eigenen Resolver erstellen und angeben.You can create and specify your own resolver. Wenn Sie keinen Resolver angeben, verwendet der Reader einen Standard XmlUrlResolver Wert ohne Benutzer Anmelde Informationen.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 gespeichert ist, für das eine Authentifizierung erforderlich ist XmlResolver.Credentials , verwenden Sie die-Eigenschaft, um die erforderlichen Anmelde Informationen anzugeben.If the resource is stored on a system that requires authentication, you use the XmlResolver.Credentials property to specify the necessary credentials.

Angeben von Authentifizierungs Anmelde InformationenSupplying authentication credentials

Die Datei, die die zu lesenden XML-Daten enthält, kann über eine eingeschränkte Zugriffs Richtlinie verfügen.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, werden die nullAnmelde Informationen auf festgelegt.If the Credentials property is not set, credentials are set to null.

Nehmen Sie z. b. an, dass Anmelde Informationen erforderlich sind, wenn Daten aus dem Web zu Authentifizierungs Zwecken angefordert werden.For example, assume that credentials are needed when requesting data from the web for authentication purposes. Wenn das virtuelle Webverzeichnis keinen anonymen Zugriff zulässt, müssen Sie die Credentials -Eigenschaft so festlegen, dass Anmelde Informationen bereitgestellt werden.Unless the web virtual directory allows anonymous access, you must set the Credentials property to supply credentials. Im folgenden Beispiel wird ein XmlReader -Objekt erstellt, XmlUrlResolver das ein mit Standard Anmelde Informationen http://localhost/bookstore/inventory.xml verwendet, um auf die Website zuzugreifen.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 Anmelde Informationen für verschiedene URIs angeben und Sie einem 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. Im folgenden Beispiel wird gezeigt, wie Anmelde Informationen zu einem Cache hinzugefügt werden.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

Beachten Sie beim Arbeiten mit der XmlResolver -Klasse die folgenden Punkte.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. Beim Zwischenspeichern XmlResolver von Objekten sollten Sie vorsichtig sein, und das XmlResolver Objekt sollte nicht an eine nicht vertrauenswürdige Komponente übergeben werden.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 Ihre Anwendung Objekte XmlResolver aus nicht vertrauenswürdigem Code akzeptiert, können Sie nicht davon ausgehen, dass GetEntity der an die Methode übergebenen URI mit dem von ResolveUri der-Methode zurückgegebenen URI identisch ist.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.

  • Ihre Anwendung kann durch Implementieren eines GetEntity IStream , der die Anzahl der gelesenen Bytes einschränkt, das Risiko von Denial-of-Service-Bedrohungen für den Speicher mindern.Your application can mitigate memory denial of service threats to the GetEntity method by implementing an IStream that limits the number of bytes read. Dies schützt vor Situationen, in denen bösartiger Code versucht, einen unendlichen Stream von Bytes an GetEntity die-Methode zu übergeben.This helps guard against situations where malicious code attempts to pass an infinite stream of bytes to the GetEntity method.

Konstruktoren

XmlResolver()

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

Eigenschaften

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)

Bestimmt, ob das angegebene Objekt mit dem aktuellen Objekt identisch ist.Determines whether the specified object is equal to the current object.

(Geerbt von Object)
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)

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

Fungiert als Standardhashfunktion.Serves as the default hash function.

(Geerbt von Object)
GetType()

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

(Geerbt von Object)
MemberwiseClone()

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

(Geerbt von Object)
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)

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

ToString()

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

(Geerbt von Object)

Gilt für:

Siehe auch