XmlResolver を使用したリソースの解決
更新 : November 2007
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 への認証資格情報の提供