XmlResolver XmlResolver XmlResolver XmlResolver Class

定義

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

public ref class XmlResolver abstract
public abstract class XmlResolver
type XmlResolver = class
Public MustInherit Class XmlResolver
継承
XmlResolverXmlResolverXmlResolverXmlResolver
派生

次の例ではXmlUrlResolver 、既定の資格情報を使用してを作成します。The following example creates an XmlUrlResolver with default credentials. XmlReader 、結果のデータストリームの読み取りと表示に使用されます。A XmlReader is used to read and display the resulting data stream.

using System;
using System.Xml;
using System.IO;

class Example
{
    static void Main()
    {
        // Create an XmlUrlResolver with default credentials.
        XmlUrlResolver resolver = new XmlUrlResolver();
        resolver.Credentials = System.Net.CredentialCache.DefaultCredentials;

        // Point the resolver at the desired resource and resolve as a stream.
        Uri baseUri = new Uri("http://serverName/");
        Uri fulluri = resolver.ResolveUri(baseUri, "fileName.xml");
        Stream s = (Stream)resolver.GetEntity(fulluri, null, typeof(Stream));

        // Create the reader with the resolved stream and display the data.
        XmlReader reader = XmlReader.Create(s);
        while (reader.Read())
        {
            Console.WriteLine(reader.ReadOuterXml());
        }
    }
}
Imports System.Xml
Imports System.IO

Module Module1

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

        ' Point the resolver at the desired resource and resolve as a stream.
        Dim baseUri As New Uri("http://serverName/")
        Dim fulluri As Uri = resolver.ResolveUri(baseUri, "fileName.xml")
        Dim s As Stream = CType(resolver.GetEntity(fulluri, Nothing, GetType(Stream)), Stream)

        ' Create the reader with the resolved stream and display the data.
        Dim reader As XmlReader = XmlReader.Create(s)
        While reader.Read()
            Console.WriteLine(reader.ReadOuterXml())
        End While
    End Sub
End Module

注釈

XmlResolver型は、エンティティ、ドキュメント型定義 (dtd)、スキーマなどの外部 XML リソースを解決するために使用されます。The XmlResolver type 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.

XmlResolverセキュリティ資格情報の処理、データソースへの接続のオープン、ストリームまたはその他のオブジェクト型の形式でのリソースの返却など、リソースへの接続のネゴシエーションのすべての側面を処理します。XmlResolver handles all aspects of negotiating the connection to the resources, including handling security credentials, opening the connection to the data source, and returning the resource in the form of a stream or other object type. を呼び出すXmlResolverオブジェクトには、ストリームを解釈するタスクがあります。The object that calls XmlResolver has the task of interpreting the stream.

名前System.Xml空間には、 XmlResolverクラスの2つの具象実装が含まれています。The System.Xml namespace includes two concrete implementations of the XmlResolver class:

  • XmlUrlResolverは、 System.Xml名前空間のすべてのクラスの既定の競合回避モジュールです。XmlUrlResolver is the default resolver for all classes in the System.Xml namespace. これは、file:// および http:// プロトコルをサポートし、System.Net.WebRequest クラスからの要求をサポートします。It supports the file:// and http:// protocols and requests from the System.Net.WebRequest class. クラスを拡張してパフォーマンスを向上させる例にXmlUrlResolverついては、リファレンスページを参照してください。For examples of extending the class to improve performance, see the XmlUrlResolver reference page.

  • XmlSecureResolverオブジェクトをラップXmlResolverし、アクセスできるリソースを制限することで、別のオブジェクトをセキュリティで保護できます。XmlSecureResolver helps secure another XmlResolver object by wrapping the object and restricting the resources that it can access. たとえば、はXmlSecureResolver 、特定のインターネットサイトまたはゾーンへのアクセスを禁止できます。For example, the XmlSecureResolver can prohibit access to specific Internet sites or zones.

独自の競合回避モジュールを作成して指定できます。You can create and specify your own resolver. 競合回避モジュールを指定しない場合、リーダーは既定XmlUrlResolverのをユーザー資格情報なしで使用します。If you don't specify a resolver, the reader uses a default XmlUrlResolver with no user credentials.

XmlResolver プロパティを設定して XmlReaderSettings.XmlResolver オブジェクトを XmlReaderSettings メソッドに渡すことにより、使用する Create を指定します。You specify the XmlResolver to use by setting the XmlReaderSettings.XmlResolver property and passing the XmlReaderSettings object to the Create method.

リソースが認証を必要とするシステムに格納されている場合XmlResolver.Credentialsは、プロパティを使用して必要な資格情報を指定します。If the resource is stored on a system that requires authentication, you use the XmlResolver.Credentials property to specify the necessary credentials.

認証資格情報の指定Supplying authentication credentials

読み取る XML データを含むファイルにアクセスポリシーが制限されている可能性があります。The file that contains the XML data to read may have a restricted access policy. ネットワーク リソースにアクセスするために認証が必要な場合は、Credentials プロパティを使用して必要な資格情報を指定します。If authentication is required to access a network resource, use the Credentials property to specify the necessary credentials. プロパティが設定されていない場合、資格null情報はに設定されます。 CredentialsIf the Credentials property is not set, credentials are set to null.

たとえば、認証のために web からデータを要求するときに資格情報が必要であるとします。For example, assume that credentials are needed when requesting data from the web for authentication purposes. Web 仮想ディレクトリで匿名アクセスが許可されていないCredentials限り、資格情報を提供するようにプロパティを設定する必要があります。Unless the web virtual directory allows anonymous access, you must set the Credentials property to supply credentials. 次の例ではXmlReaderXmlUrlResolver http://localhost/bookstore/inventory.xml既定の資格情報を持つを使用してサイトにアクセスするオブジェクトを作成します。The following example creates an XmlReader object that uses an XmlUrlResolver with default credentials to access the http://localhost/bookstore/inventory.xml site.

// 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"http://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("http://ServerName/data/books.xml", settings);
' 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("http://ServerName/data/books.xml", settings)

Uri ごとに異なる資格情報を指定し、それらをキャッシュに追加することができます。You can supply different credentials for different URIs and add them to a cache. これらの資格情報は、XML の出所には関係なく、異なる URI について認証をチェックするために使用されます。These credentials are used to check authentication for the different URIs regardless of the original source of the XML. 次の例は、資格情報をキャッシュに追加する方法を示しています。The following example shows how to add credentials to a cache.

// Create the credentials.
NetworkCredential myCred = new NetworkCredential(UserName,SecurelyStoredPassword,Domain); 
CredentialCache myCache = new CredentialCache(); 
myCache.Add(new Uri("http://www.contoso.com/"), "Basic", myCred); 
myCache.Add(new Uri("http://app.contoso.com/"), "Basic", myCred);

// Set the credentials on the XmlUrlResolver object.
XmlUrlResolver resolver = new XmlUrlResolver();
resolver.Credentials = myCache;

// Compile the style sheet.
XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load("http://serverName/data/xsl/order.xsl",XsltSettings.Default, resolver);	
' Create the credentials.
Dim myCred As NetworkCredential = New NetworkCredential(UserName,SecurelyStoredPassword,Domain)
Dim myCache As CredentialCache = New CredentialCache()
myCache.Add(new Uri("http://www.contoso.com/"), "Basic", myCred)
myCache.Add(new Uri("http://app.contoso.com/"), "Basic", myCred)

' Set the credentials on the XmlUrlResolver object.
Dim resolver As XmlUrlResolver = New XmlUrlResolver()
resolver.Credentials = myCache

' Compile the style sheet.
Dim xslt As XslCompiledTransform = New XslCompiledTransform()
xslt.Load("http://serverName/data/xsl/order.xsl", XsltSettings.Default, resolver)

セキュリティの考慮事項Security considerations

XmlResolverクラスを使用する場合は、次の点を考慮してください。Consider the following items when working with the XmlResolver class.

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

  • XmlResolver クラスを使用したクラス プロパティを設計する場合は、そのプロパティは書き込み専用として定義する必要があります。If you are designing a class property that uses the XmlResolver class, the property should be defined as a write-only property. 使用する XmlResolver を指定するためにそのプロパティを使用できますが、XmlResolver オブジェクトを返すためには使用できません。The property can be used to specify the XmlResolver to use, but it cannot be used to return an XmlResolver object.

  • アプリケーションが信頼さXmlResolverれていないコードからオブジェクトを受け入れる場合、 GetEntityメソッドに渡された URI が、 ResolveUriメソッドによって返される URI と同じであると想定することはできません。If your application accepts XmlResolver objects from untrusted code, you cannot assume that the URI passed into the GetEntity method will be the same as that returned by the ResolveUri method. XmlResolver クラスから派生したクラスは、GetEntity メソッドをオーバーライドすることができ、元の URI に含まれていたデータと異なるデータを返すことができます。Classes derived from the XmlResolver class can override the GetEntity method and return data that is different than what was contained in the original URI.

  • アプリケーションでは、 GetEntity IStream読み取るバイト数を制限するを実装することで、メソッドに対するメモリのサービス拒否の脅威を軽減できます。Your application can mitigate memory denial of service threats to the GetEntity method by implementing an IStream that limits the number of bytes read. これにより、 GetEntity悪意のあるコードがメソッドに無制限のバイトストリームを渡そうとした場合に保護できます。This helps guard against situations where malicious code attempts to pass an infinite stream of bytes to the GetEntity method.

コンストラクター

XmlResolver() XmlResolver() XmlResolver() XmlResolver()

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

プロパティ

Credentials Credentials Credentials Credentials

派生クラスでオーバーライドされると、Web 要求を認証するために使用する資格情報を設定します。When overridden in a derived class, sets the credentials used to authenticate web requests.

メソッド

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 を実際のリソースを格納しているオブジェクトに割り当てます。When overridden in a derived class, 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 を解決します。When overridden in a derived class, 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.

ToString() ToString() ToString() ToString()

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

(Inherited from Object)

適用対象

こちらもご覧ください