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

XmlValidatingReader クラスは、XmlResolver を使用して、外部の DTD、エンティティ、およびスキーマを解決します。これらの外部リソースを解決するには、XmlValidatingReaderXmlResolver プロパティを設定する必要があります。XmlValidatingReader によって使用される外部 DTD リソースを解決するためにリゾルバを設定する方法を次の例に示します。

dim vreader as New
   XmlValidatingReader("http://www.alpineskihouse.org/abc.xml")
dim resolver As new XmlUrlResolver()
vreader.XmlResolver = resolver
while vreader.Read
    . . . 
End While
[C#]
XmlValidatingReader vreader =           
    newXmlValidatingReader("http://www.alpineskihouse.org/abc.xml");
vreader.XmlResolver = new XmlUrlResolver();
while(Reader.read())
   {
       . . . 
   }

DTD を解決するために、XmlValidatingReaderGetEntity メソッドを呼び出してエンティティのストリーム表現を取得します。DTD の URI が相対 URI である場合、XmlValidatingReaderResolveUri メソッドを呼び出して、指定された relativeUribaseUri に対応する絶対 URI を返します。XmlResolver は、指定された URI の解決方法がわからない場合には null 参照を返します。

さらに、外部ソリースにアクセスするためにセキュリティ設定が必要である場合は、それに応じて Credentials プロパティを設定できます。Credentials プロパティは ICredentials インターフェイスを実装します。このプロパティを使用して、URI の認証設定を指定できます。資格情報の提供方法については、「ファイルからの読み取り時の XmlResolver への資格情報の提供」を参照してください。

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

XmlValidatingReaderXmlResolver を指定しない場合は、既定の XmlUrlResolver が作成され、null の資格情報が使用されます。

その他のすべての XML リソースの解決も、DTD の解決とほとんど同じです。XmlResolver は、外部リソースとの接続のネゴシエーション方法だけを認識していればよく、内容のストリーム表現を返します。ストリームを解釈するタスクを実行するのは、XmlResolver の呼び出しを行うオブジェクトです。

参照

URI 名を持つ外部 XML リソースの解決 | ファイルからの読み取り時の XmlResolver への資格情報の提供 | カスタム リゾルバの作成