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 (Extensible StyleSheet) 스타일 시트 또는 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. XML 판독기를 호출 하는 경우 DTD의 URI가 상대 URI를를 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. 덮어쓸 때 XmlResolver, GetEntity 에서 자격 증명 정보를 활용 하는 방법은 합니다 자격 증명 속성입니다.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. 이 작업은 새 WebRequestHttpRequestCachePolicy 개체를 만들어서 수행됩니다.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

웹 요청을 인증하는 데 사용된 자격 증명을 설정합니다.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를 확인합니다.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)

적용 대상

추가 정보