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 (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.

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 클래스: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. 경우는 Credentials 속성이 설정 되지 않은 경우 자격 증명으로 설정 됩니다 null합니다.If the Credentials property is not set, credentials are set to null.

예를 들어 인증을 위해 웹에서 데이터를 요청할 때 자격 증명이 필요 하다는 것으로 가정 합니다.For example, assume that credentials are needed when requesting data from the web for authentication purposes. 웹 가상 디렉터리에서 익명 액세스를 허용 하지 않는 한 설정 해야 합니다는 Credentials 속성 자격 증명을 제공 합니다.Unless the web virtual directory allows anonymous access, you must set the Credentials property to supply credentials. 다음 예제에서는 XmlReader 사용 하는 개체를 XmlUrlResolver 액세스 하려면 기본 자격 증명을 사용 하 여는 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 신뢰할 수 없는 코드에서 개체를 가정할 수는 없습니다에 전달 된 URI는 GetEntity 메서드를 사용 됩니다 반환한 것과 동일 합니다 ResolveUri 메서드.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

파생 클래스에서 재정의되면 웹 요청을 인증하는 데 사용된 자격 증명을 설정합니다.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)

적용 대상

추가 정보