XmlUrlResolver XmlUrlResolver XmlUrlResolver XmlUrlResolver Class

定義

URI (Uniform Resource Identifier) で名前が指定された外部 XML リソースを解決します。Resolves external XML resources named by a Uniform Resource Identifier (URI).

public ref class XmlUrlResolver : System::Xml::XmlResolver
public class XmlUrlResolver : System.Xml.XmlResolver
type XmlUrlResolver = class
    inherit XmlResolver
Public Class XmlUrlResolver
Inherits XmlResolver
継承
XmlUrlResolverXmlUrlResolverXmlUrlResolverXmlUrlResolver

次の例では、作成、XmlReaderを使用して、XmlUrlResolver既定の資格情報を使用します。The following example creates an XmlReader that uses an XmlUrlResolver with default credentials.


// Create an XmlUrlResolver with default credentials.
XmlUrlResolver resolver = new XmlUrlResolver();
resolver.Credentials = CredentialCache.DefaultCredentials;

// Create the reader.
XmlReaderSettings settings = new XmlReaderSettings();
settings.XmlResolver = resolver;
XmlReader reader = 
     XmlReader.Create("http://serverName/data/books.xml", settings);

' Create an XmlUrlResolver with default credentials.
Dim resolver As New XmlUrlResolver()
resolver.Credentials = CredentialCache.DefaultCredentials

' Create the reader.
Dim settings As New XmlReaderSettings()
settings.XmlResolver = resolver
Dim reader As XmlReader = _
   XmlReader.Create("http://serverName/data/books.xml", settings)

注釈

XmlUrlResolver ドキュメント型定義 (Dtd) またはスキーマのエンティティなどの外部の XML リソースの解決に使用されます。XmlUrlResolver is used to resolve external XML resources such as entities, document type definitions (DTDs) or schemas. 使用することもプロセスを含めるし、スタイル シートの拡張可能なスタイル シート言語 (XSL) または XML スキーマ定義言語 (XSD) スキーマで検出された要素をインポートします。It is also used to process include and import elements found in Extensible StyleSheet Language (XSL) style sheets or XML Schema definition language (XSD) schemas.

XmlUrlResolver すべてのクラスの既定のリゾルバーは、System.Xml名前空間。XmlUrlResolver is the default resolver for all classes in the System.Xml namespace. これは、file:// および http:// プロトコルをサポートし、WebRequest クラスからの要求をサポートします。It supports the file:// and http:// protocols and requests from the WebRequest class.

重要

XmlUrlResolver オブジェクトはユーザー資格情報など、重要な情報を含むことがあります。XmlUrlResolver objects can contain sensitive information such as user credentials. キャッシュするときに注意するありますXmlUrlResolverオブジェクトし、渡さないでくださいXmlUrlResolverオブジェクトを信頼できないコンポーネント。You should be careful when you cache XmlUrlResolver objects and should not pass XmlUrlResolver objects to an untrusted component.

Dtd の解決Resolving DTDs

XML リーダーの場合 (XmlReader) 外部の DTD を含む XML ファイルを読み込み、呼び出し、 XmlUrlResolver.GetEntityAsync DTD のストリーム表現を取得します。If an XML reader (XmlReader) is reading an XML file that contains an external DTD, it calls the XmlUrlResolver.GetEntityAsync method to get a stream representation of the DTD. DTD の URI が相対 URI の場合は、XML リーダーを呼び出す、XmlUrlResolver.ResolveUriメソッドの絶対 URI を返します、指定されたrelativeUribaseURiパラメーター。If the URI of the DTD is a relative URI, the XML reader calls the XmlUrlResolver.ResolveUri method and returns an absolute URI for the given relativeUri and baseURi parameters. 場合、 XmlUrlResolver 、URI を解決する方法を認識しない返しますnullします。If the XmlUrlResolver doesn't know how to resolve the URI, it returns null.

XmlUrlResolver.GetEntity メソッドでは、必要に応じて Credentials プロパティ内の情報を使用して、リソースにアクセスします。The XmlUrlResolver.GetEntity method uses the information in the Credentials property as appropriate to gain access to the resource. セキュリティ上の理由から、このプロパティへの get アクセサーはありません。There is no get accessor to this property for security reasons. 上書き時にXmlResolverGetEntity内の資格情報を使用するメソッドは、資格情報プロパティ。When overwriting XmlResolver, GetEntity is the method that utilizes the credential information in the Credentials property.

その他のすべての XML リソースの解決は、DTD の解決に非常に似ています。Resolving all other XML resources is very similar to resolving DTDs. XmlResolver 外部のリソースとの接続をネゴシエートし、返します、Streamコンテンツの表現。XmlResolver negotiates the connection with the external resource and returns a Stream representation of the content. オブジェクトへの呼び出しを行っているXmlResolverストリームを解釈します。The object that is making the call to XmlResolver interprets the stream.

XmlUrlResolver クラスの拡張Extending the XmlUrlResolver class

XmlUrlResolver の既定の動作では、キャッシュではなくソースから XML データ リソースを解決します。The default behavior of the XmlUrlResolver class is to resolve an XML data resource from its source, not from cache. 場合によっては、キャッシュからデータ リソースを解決することでデータ リソース サーバーへのトリップが不要になるため、アプリケーションのパフォーマンスを高めることができます。In some cases, resolving a data resource from cache can improve the performance of an application by saving a trip to the data resource's server. このパフォーマンスの向上を重視するか、最新コンテンツの必要性を重視するかを検討する必要があります。The performance gains here must be weighed against the need for up-to-date content.

次の例では拡張XmlUrlResolver、新しいクラスの構築とXmlCachingResolver、キャッシュからリソースを取得します。The following example extends XmlUrlResolver and builds a new class, XmlCachingResolver, to retrieve resources from the cache. そのために、XmlUrlResolver.Credentials プロパティと XmlUrlResolver.GetEntity メソッドをオーバーライドします。This is done by overriding the XmlUrlResolver.Credentials property and the XmlUrlResolver.GetEntity method.

class XmlCachingResolver : XmlUrlResolver
{
    bool enableHttpCaching;
    ICredentials credentials;

    //resolve resources from cache (if possible) when enableHttpCaching is set to true
    //resolve resources from source when enableHttpcaching is set to false 
    public XmlCachingResolver(bool enableHttpCaching)
    {
        this.enableHttpCaching = enableHttpCaching;
    }

    public override ICredentials Credentials
    {
        set
        {
            credentials = value;
            base.Credentials = value;
        }
    }

    public override object GetEntity(Uri absoluteUri, string role, Type ofObjectToReturn)
    {
        if (absoluteUri == null)
        {
            throw new ArgumentNullException("absoluteUri");
        }
        //resolve resources from cache (if possible)
        if (absoluteUri.Scheme == "http" && enableHttpCaching && (ofObjectToReturn == null || ofObjectToReturn == typeof(Stream)))
        {
            WebRequest webReq = WebRequest.Create(absoluteUri);
            webReq.CachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.Default);
            if (credentials != null)
            {
                webReq.Credentials = credentials;
            }
            WebResponse resp = webReq.GetResponse();
            return resp.GetResponseStream();
        }
        //otherwise use the default behavior of the XmlUrlResolver class (resolve resources from source)
        else
        {
            return base.GetEntity(absoluteUri, role, ofObjectToReturn);
        }
    }
}
Class XmlCachingResolver
    Inherits XmlUrlResolver
    Dim enableHttpCaching As Boolean
    Public Shadows Credentials As ICredentials

    'resolve resources from cache (if possible) when enableHttpCaching is set to true
    'resolve resources from source when enableHttpcaching is set to false
    Public Sub New(ByVal enableHttpCaching As Boolean)
        Me.enableHttpCaching = enableHttpCaching
    End Sub

    Public Shadows Function GetEntity(ByVal absoluteUri As Uri, ByVal role As String, ByVal returnType As Type) As Object
        If absoluteUri = Nothing Then
            Throw New ArgumentNullException("absoluteUri")
        End If

        'resolve resources from cache (if possible)
        If absoluteUri.Scheme = "http" And enableHttpCaching And (returnType Is GetType(Nullable) Or returnType Is GetType(Stream)) Then
            Dim webReq As WebRequest = WebRequest.Create(absoluteUri)
            webReq.CachePolicy = New HttpRequestCachePolicy(HttpRequestCacheLevel.Default)
            If Not (Credentials Is Nothing) Then
                webReq.Credentials = Credentials
            End If
            Dim resp As WebResponse = webReq.GetResponse()
            Return resp.GetResponseStream()
            'otherwise use the default behavior of the XmlUrlResolver class (resolve resources from source)
        Else
            Return MyBase.GetEntity(absoluteUri, role, returnType)
        End If

    End Function
End Class

XmlCachingResolver クラスのキャッシュ動作を GetEntity メソッドに実装します。The caching behavior of the XmlCachingResolver class is implemented in the GetEntity method. そのために、WebRequest オブジェクトと HttpRequestCachePolicy オブジェクトを新しく作成します。This is done by creating new WebRequest and HttpRequestCachePolicy objects. HttpRequestCachePolicy 列挙体の Default メンバーを使用して、HttpRequestCacheLevel オブジェクトを作成します。The HttpRequestCachePolicy object is created using the Default member of the HttpRequestCacheLevel enumeration.

CachePolicy オブジェクトの WebRequest プロパティに HttpRequestCachePolicy オブジェクトを設定します。The CachePolicy property of the WebRequest object is set with the HttpRequestCachePolicy object.

XmlCachingResolver``Boolean を使用して、enableHttpCaching クラスのインスタンスを作成します。An instance of the XmlCachingResolver class is created with the Boolean enableHttpCaching. この値を設定するとtrueインスタンスが可能であれば、既定のキャッシュからリソースを解決します。When this value is set to true, the instance resolves a resource from the default cache if possible. ときにenableHttpCachingに設定されているfalseインスタンスの既定の動作を使用してし、そのソースからリソースを解決します。When enableHttpCaching is set to false, the instance uses the default behavior and resolves resources from their source.

注意

この例では、.NET Framework の XML クラスの拡張性を利用します。This example leverages the extensibility of the XML classes in the .NET Framework. 他のクラスも、特定のアプリケーションの要件に合わせて拡張し、カスタマイズできます。Other classes can be extended and customized to suit the needs of a particular application.

コンストラクター

XmlUrlResolver() XmlUrlResolver() XmlUrlResolver() XmlUrlResolver()

XmlUrlResolver クラスの新しいインスタンスを初期化します。Initializes a new instance of the XmlUrlResolver class.

プロパティ

CachePolicy CachePolicy CachePolicy CachePolicy

基になる WebRequest オブジェクトのキャッシュ ポリシーを取得または設定します。Gets or sets the cache policy for the underlying WebRequest object.

Credentials Credentials Credentials Credentials

Web 要求を認証するために使用する資格情報を設定します。Sets credentials used to authenticate web requests.

Proxy Proxy Proxy Proxy

基になる WebRequest オブジェクトのネットワーク プロキシを取得または設定します。Gets or sets the network proxy for the underlying WebRequest object.

メソッド

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

指定したオブジェクトが、現在のオブジェクトと等しいかどうかを判断します。Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetEntity(Uri, String, Type) GetEntity(Uri, String, Type) GetEntity(Uri, String, Type) GetEntity(Uri, String, Type)

URI を実際のリソースを格納しているオブジェクトにマップします。Maps a URI to an object that contains the actual resource.

GetEntityAsync(Uri, String, Type) GetEntityAsync(Uri, String, Type) GetEntityAsync(Uri, String, Type) GetEntityAsync(Uri, String, Type)

URI を実際のリソースを格納しているオブジェクトに非同期にマップします。Asynchronously maps a URI to an object that contains the actual resource.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

既定のハッシュ関数として機能します。Serves as the default hash function.

(Inherited from Object)
GetType() GetType() GetType() GetType()

現在のインスタンスの Type を取得します。Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

現在の Object の簡易コピーを作成します。Creates a shallow copy of the current Object.

(Inherited from Object)
ResolveUri(Uri, String) ResolveUri(Uri, String) ResolveUri(Uri, String) ResolveUri(Uri, String)

ベース URI および 相対 URI を解決して絶対 URI を返します。Resolves the absolute URI from the base and relative URIs.

SupportsType(Uri, Type) SupportsType(Uri, Type) SupportsType(Uri, Type) SupportsType(Uri, Type)

リゾルバーが Stream 以外の型を返せるようにします。Enables the resolver to return types other than Stream.

(Inherited from XmlResolver)
ToString() ToString() ToString() ToString()

現在のオブジェクトを表す文字列を返します。Returns a string that represents the current object.

(Inherited from Object)

適用対象

こちらもご覧ください