Auflösen von Ressourcen mit dem "XmlResolver"

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.

Das Auflösen aller anderen XML-Ressourcen entspricht weitgehend dem Auflösen von DTDs.XmlResolver muss nur wissen, wie die Verbindung mit der externen Ressource ausgehandelt wird, und gibt eine Datenstromdarstellung des Inhalts zurück.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