XmlResolver Klasa

Definicja

Rozpoznaje zewnętrzne zasoby XML o nazwie Uniform Resource Identifier (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
Dziedziczenie
XmlResolver
Pochodne

Przykłady

Poniższy przykład tworzy XmlUrlResolver z poświadczeniami domyślnymi.The following example creates an XmlUrlResolver with default credentials. XmlReader jest używany do odczytywania i wyświetlania strumienia danych wyjściowych.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

Uwagi

Typ XmlResolver jest używany do rozpoznawania zewnętrznych zasobów XML, takich jak jednostki, definicje typu dokumentu (DTD) lub schematy.The XmlResolver type is used to resolve external XML resources, such as entities, document type definitions (DTDs), or schemas. Służy również do przetwarzania elementów include i import znalezionych w arkuszach stylów Extensible Stylesheet Language (XSL) lub języka definicji schematu 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 obsługuje wszystkie aspekty negocjowania połączenia z zasobami, w tym obsługę poświadczeń zabezpieczeń, otwieranie połączenia ze źródłem danych i zwracanie zasobu w postaci strumienia lub innego typu obiektu.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. Obiekt, który wywołuje XmlResolver, zawiera zadanie interpretacji strumienia.The object that calls XmlResolver has the task of interpreting the stream.

Przestrzeń nazw System.Xml obejmuje dwa konkretne implementacje klasy XmlResolver:The System.Xml namespace includes two concrete implementations of the XmlResolver class:

  • XmlUrlResolver to domyślny program rozpoznawania nazw dla wszystkich klas w przestrzeni nazw System.Xml.XmlUrlResolver is the default resolver for all classes in the System.Xml namespace. Obsługuje file:// i http:// protokołów i żądań z klasy System.Net.WebRequest.It supports the file:// and http:// protocols and requests from the System.Net.WebRequest class. Przykłady rozszerzania klasy w celu zwiększenia wydajności można znaleźć na stronie odniesienia XmlUrlResolver.For examples of extending the class to improve performance, see the XmlUrlResolver reference page.

  • XmlSecureResolver pomaga zabezpieczyć inny obiekt XmlResolver przez Zawijanie obiektu i ograniczanie zasobów, do których może uzyskać dostęp.XmlSecureResolver helps secure another XmlResolver object by wrapping the object and restricting the resources that it can access. Na przykład XmlSecureResolver może uniemożliwić dostęp do określonych witryn lub stref internetowych.For example, the XmlSecureResolver can prohibit access to specific Internet sites or zones.

Można utworzyć i określić własny program rozpoznawania nazw.You can create and specify your own resolver. Jeśli nie określisz programu rozpoznawania nazw, czytnik używa domyślnego XmlUrlResolver bez poświadczeń użytkownika.If you don't specify a resolver, the reader uses a default XmlUrlResolver with no user credentials.

Należy określić XmlResolver do użycia przez ustawienie właściwości XmlReaderSettings.XmlResolver i przekazanie obiektu XmlReaderSettings do metody Create.You specify the XmlResolver to use by setting the XmlReaderSettings.XmlResolver property and passing the XmlReaderSettings object to the Create method.

Jeśli zasób jest przechowywany w systemie, który wymaga uwierzytelniania, użyj właściwości XmlResolver.Credentials, aby określić niezbędne poświadczenia.If the resource is stored on a system that requires authentication, you use the XmlResolver.Credentials property to specify the necessary credentials.

Dostarczanie poświadczeń uwierzytelnianiaSupplying authentication credentials

Plik zawierający dane XML do odczytania mogą mieć ograniczone zasady dostępu.The file that contains the XML data to read may have a restricted access policy. Jeśli do uzyskania dostępu do zasobu sieciowego jest wymagane uwierzytelnianie, użyj właściwości Credentials, aby określić niezbędne poświadczenia.If authentication is required to access a network resource, use the Credentials property to specify the necessary credentials. Jeśli właściwość Credentials nie jest ustawiona, poświadczenia są ustawione na null.If the Credentials property is not set, credentials are set to null.

Załóżmy na przykład, że poświadczenia są potrzebne podczas żądania danych z sieci Web w celu uwierzytelnienia.For example, assume that credentials are needed when requesting data from the web for authentication purposes. Jeśli katalog wirtualny sieci Web nie zezwala na dostęp anonimowy, należy ustawić właściwość Credentials, aby podać poświadczenia.Unless the web virtual directory allows anonymous access, you must set the Credentials property to supply credentials. Poniższy przykład tworzy obiekt XmlReader, który używa XmlUrlResolver z poświadczeniami domyślnymi w celu uzyskania dostępu do witryny 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)

Możesz podać inne poświadczenia dla różnych identyfikatorów URI i dodać je do pamięci podręcznej.You can supply different credentials for different URIs and add them to a cache. Te poświadczenia są używane do sprawdzania uwierzytelniania dla różnych identyfikatorów URI niezależnie od oryginalnego źródła kodu XML.These credentials are used to check authentication for the different URIs regardless of the original source of the XML. Poniższy przykład pokazuje, jak dodać poświadczenia do pamięci podręcznej.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)

Zagadnienia związane z zabezpieczeniamiSecurity considerations

Podczas pracy z klasą XmlResolver należy wziąć pod uwagę następujące elementy.Consider the following items when working with the XmlResolver class.

  • obiekty XmlResolver mogą zawierać informacje poufne, takie jak poświadczenia użytkownika.XmlResolver objects can contain sensitive information such as user credentials. Należy zachować ostrożność podczas buforowania obiektów XmlResolver i nie należy przekazywać obiektu XmlResolver do niezaufanego składnika.You should be careful when caching XmlResolver objects and should not pass the XmlResolver object to an untrusted component.

  • W przypadku projektowania właściwości klasy, która używa klasy XmlResolver, właściwość powinna być zdefiniowana jako właściwość tylko do zapisu.If you are designing a class property that uses the XmlResolver class, the property should be defined as a write-only property. Właściwość może służyć do określania XmlResolver, która ma być używana, ale nie można jej użyć do zwrócenia obiektu XmlResolver.The property can be used to specify the XmlResolver to use, but it cannot be used to return an XmlResolver object.

  • Jeśli aplikacja akceptuje XmlResolver obiekty z niezaufanego kodu, nie można założyć, że identyfikator URI przesłany do metody GetEntity będzie taki sam, jak zwracany przez metodę 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. Klasy pochodne klasy XmlResolver mogą przesłonić metodę GetEntity i zwracać dane, które są inne niż zawarte w oryginalnym identyfikatorze 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.

  • Aplikacja może ograniczyć zagrożenia odmowy usługi pamięci do metody GetEntity przez implementację IStream, która ogranicza liczbę odczytanych bajtów.Your application can mitigate memory denial of service threats to the GetEntity method by implementing an IStream that limits the number of bytes read. Pomaga to chronić przed sytuacje, w których złośliwy kod próbuje przekazać nieskończony strumień bajtów do metody GetEntity.This helps guard against situations where malicious code attempts to pass an infinite stream of bytes to the GetEntity method.

Konstruktory

XmlResolver()

Inicjuje nowe wystąpienie klasy XmlResolver.Initializes a new instance of the XmlResolver class.

Właściwości

Credentials

Gdy jest zastępowany w klasie pochodnej, ustawia poświadczenia używane do uwierzytelniania żądań sieci Web.When overridden in a derived class, sets the credentials used to authenticate web requests.

Metody

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.Determines whether the specified object is equal to the current object.

(Odziedziczone po Object)
GetEntity(Uri, String, Type)

Gdy jest zastępowany w klasie pochodnej, mapuje identyfikator URI na obiekt, który zawiera rzeczywisty zasób.When overridden in a derived class, maps a URI to an object that contains the actual resource.

GetEntityAsync(Uri, String, Type)

Asynchronicznie mapuje identyfikator URI do obiektu, który zawiera rzeczywisty zasób.Asynchronously maps a URI to an object that contains the actual resource.

GetHashCode()

Służy jako domyślna funkcja skrótu.Serves as the default hash function.

(Odziedziczone po Object)
GetType()

Pobiera Type bieżącego wystąpienia.Gets the Type of the current instance.

(Odziedziczone po Object)
MemberwiseClone()

Tworzy skróconą kopię bieżącego Object.Creates a shallow copy of the current Object.

(Odziedziczone po Object)
ResolveUri(Uri, String)

Gdy jest zastępowany w klasie pochodnej, rozwiązuje bezwzględny identyfikator URI z bazowego i względnego identyfikatora URI.When overridden in a derived class, resolves the absolute URI from the base and relative URIs.

SupportsType(Uri, Type)

Umożliwia programowi rozpoznawania nazw zwracanie typów innych niż Stream.Enables the resolver to return types other than Stream.

ToString()

Zwraca ciąg reprezentujący bieżący obiekt.Returns a string that represents the current object.

(Odziedziczone po Object)

Dotyczy

Zobacz też