Freigeben über


Auflösen von Ressourcen mit dem "XmlResolver"

Aktualisiert: November 2007

Die XmlReader-Klasse löst mit dem XmlResolver externe DTDs, Entitäten und Schemas auf. Die XmlReader-Klasse verwendet standardmäßig einen XmlUrlResolver ohne Benutzeranmeldeinformationen. Sie geben den zu verwendenden XmlResolver an, indem Sie die XmlResolver-Eigenschaft festlegen und das XmlReaderSettings-Objekt an die Create-Methode übergeben.

Mit dem folgenden Code wird eine XmlReader-Instanz erstellt, die einen XmlUrlResolver mit Standardanmeldeinformationen verwendet.

' 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("https://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("https://ServerName/data/books.xml", settings);
// 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"https://ServerName/data/books.xml", settings );

Wenn die Datei books.xml eine externe DTD enthält, wird sie vom XmlReader wie folgt behandelt: Zum Auflösen einer DTD ruft der XmlReader die GetEntity-Methode auf, um eine Streamdarstellung der Entität zu erhalten. Wenn der URI der DTD ein relativer URI ist, ruft der XmlReader die ResolveUri-Methode auf und gibt den absoluten URI zurück, der den angegebenen relativeUri- und baseUri-Werten entspricht. Wenn der XmlUrlResolver den angegebenen URI nicht auflösen kann, wird ein null-Verweis zurückgegeben.

Die GetEntity-Methode verwendet die Informationen in der Credentials-Eigenschaft, um Zugriff auf die Ressource zu erhalten. Aus Sicherheitsgründen gibt es für diese Eigenschaft keinen get-Accessor. Beim Überschreiben des XmlResolver verwendet die GetEntity-Methode die Anmeldeinformationen in der Credentials-Eigenschaft.

Die Auflösung der anderen XML-Ressourcen ist der Auflösung von DTDs sehr ähnlich. Dem XmlResolver muss nur bekannt sein, wie die Verbindung mit der externen Ressource ausgehandelt wird. Anschließend muss er eine Streamdarstellung des Inhalts zurückgeben. Die Interpretation des Streams ist Aufgabe des Objekts, das der XmlResolver aufruft.

Siehe auch

Konzepte

Angeben von Authentifizierungsinformationen für "XmlResolver" beim Lesen aus einer Datei

Zugreifen auf externe Ressourcen für "XmlReader"

Auflösen von externen Ressourcen während der XSLT-Verarbeitung

Weitere Ressourcen

Auflösen von externen mit einem URI benannten XML-Ressourcen