XmlResolver を使用したリソースの解決

XmlReader クラスでは、XmlResolver を使用して、外部の DTD、エンティティ、およびスキーマを解決します。XmlReader クラスでは、既定で XmlUrlResolver をユーザー資格情報なしで使用します。XmlResolver プロパティを設定して XmlReaderSettings オブジェクトを Create メソッドに渡すことにより、使用する XmlResolver を指定します。

次のコードでは、XmlUrlResolver を既定の資格情報で使用する XmlReader のインスタンスを作成します。

' 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 );

books.xml ファイルに外部 DTD が含まれていた場合、XmlReader では外部 DTD を次のように処理します。DTD を解決するために、XmlReader では GetEntity メソッドを呼び出してエンティティのストリーム表現を取得します。DTD の URI が相対 URI である場合、XmlReader では ResolveUri メソッドを呼び出して、指定された relativeUri と baseUri に対応する絶対 URI を返します。指定された URI の解決方法が不明である場合、XmlUrlResolver は null 参照を返します。

GetEntity メソッドでは、必要に応じて Credentials プロパティ内の情報を使用して、リソースにアクセスします。セキュリティ上の理由から、このプロパティへの get アクセサーはありません。XmlResolver を上書きする場合に、Credentials プロパティ内の資格情報を使用するメソッドは GetEntity です。

その他のすべての XML リソースの解決は、DTD の解決に非常に似ています。XmlResolver でわかっている必要があるのは、外部リソースとの接続のネゴシエーション方法とコンテンツのストリーム表現を返す方法だけです。ストリームを解釈するタスクを実行するのは、XmlResolver の呼び出しを行うオブジェクトです。

参照

概念

ファイルからの読み取り時の XmlResolver への認証資格情報の提供

XmlReader の外部リソースへのアクセス

XSLT 処理中の外部リソースの解決

その他の技術情報

NIB: URI 名を持つ外部 XML リソースの解決