XmlResolver Класс

Определение

Разрешает внешние ресурсы XML, имена которых заданы с помощью URI.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
Наследование
XmlResolver
Производный

Примеры

В следующем примере создается объект 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 Тип используется для разрешения внешних ресурсов XML, таких как сущности, определения типов документов (DTD) или схемы.The XmlResolver type is used to resolve external XML resources, such as entities, document type definitions (DTDs), or schemas. Он также используется для обработки элементов include и Import, найденных в таблицах стилей XSL или схемах языка определения схемы 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.

Пространство имен включает две конкретные реализации XmlResolver класса: System.XmlThe 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.

Например, предположим, что учетные данные необходимы при запросе данных из Интернета для проверки подлинности.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. Эти учетные данные используются для проверки подлинности на различных URI-идентификаторах ресурсов вне зависимости от первоначального источника XML.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.Initializes a new instance of the XmlResolver class.

Свойства

Credentials

При переопределении в производном классе задает учетные данные для аутентификации веб-запросов.When overridden in a derived class, sets the credentials used to authenticate web requests.

Методы

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.Determines whether the specified object is equal to the current object.

(Унаследовано от Object)
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)

Асинхронно сопоставляет универсальный код ресурса (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.When overridden in a derived class, resolves the absolute URI from the base and relative URIs.

SupportsType(Uri, Type)

Позволяет сопоставителю возвращать типы, отличные от Stream.Enables the resolver to return types other than Stream.

ToString()

Возвращает строку, представляющую текущий объект.Returns a string that represents the current object.

(Унаследовано от Object)

Применяется к

Дополнительно