XmlResolver 클래스

정의

URI(Uniform Resource Identifier)로 명명된 외부 XML 리소스를 확인합니다.

public ref class XmlResolver abstract
public abstract class XmlResolver
type XmlResolver = class
Public MustInherit Class XmlResolver
상속
XmlResolver
파생

예제

다음 예제에서는 기본 자격 증명을 사용하여 XmlUrlResolver 만듭니다. A XmlReader 는 결과 데이터 스트림을 읽고 표시하는 데 사용됩니다.

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 리소스를 확인하는 데 사용됩니다. XSL(Extensible Stylesheet Language) 스타일시트 또는 XSD(XML 스키마 정의 언어) 스키마에 있는 요소를 포함하고 가져오는 데도 사용됩니다.

XmlResolver 는 보안 자격 증명 처리, 데이터 원본에 대한 연결 열기, 스트림 또는 다른 개체 형식의 형식으로 리소스 반환을 포함하여 리소스에 대한 연결 협상의 모든 측면을 처리합니다. 호출 XmlResolver 하는 개체에는 스트림을 해석하는 작업이 있습니다.

네임스페이스에는 System.Xml 클래스의 두 가지 구체적인 구현이 XmlResolver 포함됩니다.

  • XmlUrlResolver 는 네임스페이스의 모든 클래스에 대한 기본 확인자입니다 System.Xml . 클래스의 file:// 프로토콜 및 http:// 요청을 지원합니다 System.Net.WebRequest . 성능을 향상시키기 위해 클래스를 확장하는 예제는 참조 페이지를 참조 XmlUrlResolver 하세요.

  • XmlSecureResolver 는 개체를 래핑하고 액세스할 수 있는 리소스를 제한하여 다른 XmlResolver 개체를 보호하는 데 도움이 됩니다. 예를 들어 XmlSecureResolver 특정 인터넷 사이트 또는 영역에 대한 액세스를 금지할 수 있습니다.

사용자 고유의 확인자를 만들고 지정할 수 있습니다. 해결 프로그램을 지정하지 않으면 판독기는 사용자 자격 증명 없이 기본값 XmlUrlResolver 을 사용합니다.

속성을 설정하고 메서드에 개체를 XmlReaderSettings.XmlResolver 전달 XmlReaderSettings 하여 사용할 개체를 Create 지정 XmlResolver 합니다.

리소스가 인증이 필요한 시스템에 저장된 경우 이 속성을 사용하여 XmlResolver.Credentials 필요한 자격 증명을 지정합니다.

인증 자격 증명 제공

읽을 XML 데이터가 포함된 파일에는 제한된 액세스 정책이 있을 수 있습니다. 네트워크 리소스에 액세스하는 데 인증이 필요한 경우 속성을 사용하여 Credentials 필요한 자격 증명을 지정합니다. Credentials 속성을 설정하지 않으면 자격 증명이 .로 null설정됩니다.

예를 들어 인증을 위해 웹에서 데이터를 요청할 때 자격 증명이 필요하다고 가정합니다. 웹 가상 디렉터리에서 익명 액세스를 허용하지 않는 한 자격 증명을 Credentials 제공하려면 속성을 설정해야 합니다. 다음 예제에서는 기본 자격 증명을 XmlUrlResolver 사용하여 사이트에 액세스하는 개체를 http://localhost/bookstore/inventory.xml 만듭니다XmlReader.

// 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에 대해 서로 다른 자격 증명을 제공하고 캐시에 추가할 수 있습니다. 이러한 자격 증명은 XML의 원래 원본에 관계없이 다른 URI에 대한 인증을 확인하는 데 사용됩니다. 다음 예제에서는 캐시에 자격 증명을 추가하는 방법을 보여줍니다.

// 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)

보안 고려 사항

클래스로 작업할 때 다음 항목을 고려합니다 XmlResolver .

  • XmlResolver 개체에는 사용자 자격 증명과 같은 중요한 정보가 포함될 수 있습니다. 개체를 캐싱할 XmlResolver 때는 주의해야 하며, 개체를 XmlResolver 신뢰할 수 없는 구성 요소에 전달해서는 안 됩니다.

  • 클래스를 사용하는 XmlResolver 클래스 속성을 디자인하는 경우 이 속성은 쓰기 전용 속성으로 정의되어야 합니다. 사용할 속성을 지정할 XmlResolver 수 있지만 개체를 반환 XmlResolver 하는 데 사용할 수는 없습니다.

  • 애플리케이션에서 허용 하는 경우 XmlResolver 신뢰할 수 없는 코드에서 개체를 가정할 수는 없습니다에 전달 된 URI는 GetEntity 메서드를 사용 됩니다 반환한 것과 동일 합니다 ResolveUri 메서드. 클래스에서 파생된 클래스는 메서드를 재정의 XmlResolver GetEntity 하고 원래 URI에 포함된 것과 다른 데이터를 반환할 수 있습니다.

  • 애플리케이션 메모리에 대 한 서비스 거부를 완화할 수는 GetEntity 메서드를 구현 하 여는 IStream 읽은 바이트 수를 제한 합니다. 이렇게 하면 악의적인 코드가 메서드에 무한 바이트 스트림을 전달하려고 시도하는 상황을 방지할 수 GetEntity 있습니다.

생성자

XmlResolver()

XmlResolver 클래스의 새 인스턴스를 초기화합니다.

속성

Credentials

파생 클래스에서 재정의되면 웹 요청을 인증하는 데 사용된 자격 증명을 설정합니다.

메서드

Equals(Object)

지정된 개체가 현재 개체와 같은지 확인합니다.

(다음에서 상속됨 Object)
GetEntity(Uri, String, Type)

파생 클래스에서 재정의되면 실제 리소스를 포함하는 개체로 URI를 매핑합니다.

GetEntityAsync(Uri, String, Type)

실제 리소스가 포함된 개체로 URI를 비동기적으로 매핑합니다.

GetHashCode()

기본 해시 함수로 작동합니다.

(다음에서 상속됨 Object)
GetType()

현재 인스턴스의 Type을 가져옵니다.

(다음에서 상속됨 Object)
MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.

(다음에서 상속됨 Object)
ResolveUri(Uri, String)

파생 클래스에서 재정의되면 기본 URI 및 상대 URI에서 절대 URI를 확인합니다.

SupportsType(Uri, Type)

Stream이 아닌 유형을 반환하기 위해 확인자를 사용합니다.

ToString()

현재 개체를 나타내는 문자열을 반환합니다.

(다음에서 상속됨 Object)

적용 대상

추가 정보