XmlUrlResolver クラス

定義

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
継承
XmlUrlResolver

次の例では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) スキーマで見つかった include および import 要素を処理するためにも使用されます。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メソッドを呼び出し、指定さrelativeUriれたおよびbaseURiパラメーターの絶対 uri を返します。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. 上書きXmlResolverする場合、 getentityは、 Credentialsプロパティの資格情報を利用するメソッドです。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. enableHttpCachingfalse設定されている場合、インスタンスは既定の動作を使用し、ソースからリソースを解決します。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 クラスの新しいインスタンスを初期化します。Initializes a new instance of the XmlUrlResolver class.

プロパティ

CachePolicy

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

Credentials

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

Proxy

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

メソッド

Equals(Object)

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

(継承元 Object)
GetEntity(Uri, String, Type)

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

GetEntityAsync(Uri, String, Type)

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

GetHashCode()

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

(継承元 Object)
GetType()

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

(継承元 Object)
MemberwiseClone()

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

(継承元 Object)
ResolveUri(Uri, String)

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

SupportsType(Uri, Type)

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

(継承元 XmlResolver)
ToString()

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

(継承元 Object)

適用対象

こちらもご覧ください