XmlResolver Osztály

Definíció

Az egységes erőforrás-azonosító (URI) által elnevezett külső XML-erőforrások feloldása.

public ref class XmlResolver abstract
public abstract class XmlResolver
type XmlResolver = class
Public MustInherit Class XmlResolver
Öröklődés
XmlResolver
Származtatott

Példák

Az alábbi példa létrehoz egy XmlUrlResolver alapértelmezett hitelesítő adatokat. Az A XmlReader az eredményként kapott adatfolyam olvasására és megjelenítésére szolgál.

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

Megjegyzések

A XmlResolver típus külső XML-erőforrások, például entitások, dokumentumtípus-definíciók (DTD-k) vagy sémák feloldására szolgál. Emellett az Extensible Stylesheet Language (XSL) stíluslapokban vagy az XML-sémadefiníciós (XSD) sémákban található elemek feldolgozására és importálására is használható.

XmlResolver Kezeli az erőforrásokhoz való kapcsolat egyeztetésének minden aspektusát, beleértve a biztonsági hitelesítő adatok kezelését, az adatforráshoz való csatlakozás megnyitását és az erőforrás stream vagy más objektumtípus formájában történő visszaadását. A hívást kezdeményező XmlResolver objektum feladata a stream értelmezése.

A System.Xml névtér az osztály következő konkrét implementációját XmlResolver tartalmazza:

  • XmlUrlResolver A névtérben lévő System.Xml összes osztály alapértelmezett feloldója. Támogatja az file:// osztálytól érkező http:// protokollokat és System.Net.WebRequest kéréseket. Az osztály teljesítménynövelő kibővítésére vonatkozó példákért tekintse meg a referenciaoldalt XmlUrlResolver .

Létrehozhatja és megadhatja a saját feloldóját. Ha nem ad meg feloldót, az olvasó egy alapértelmezett, felhasználói hitelesítő adatok nélküli beállítást XmlUrlResolver használ.

A használni kívánt értéket úgy adhatja meg XmlResolver , hogy beállítja a XmlReaderSettings.XmlResolver tulajdonságot, és átadja az XmlReaderSettings objektumot a Create metódusnak.

Ha az erőforrás egy hitelesítést igénylő rendszeren van tárolva, a XmlResolver.Credentials tulajdonság használatával adja meg a szükséges hitelesítő adatokat.

Hitelesítő adatok megadása

Az olvasni kívánt XML-adatokat tartalmazó fájl korlátozott hozzáférési szabályzattal rendelkezhet. Ha hitelesítésre van szükség egy hálózati erőforrás eléréséhez, a Credentials tulajdonság használatával adja meg a szükséges hitelesítő adatokat. Ha a Credentials tulajdonság nincs beállítva, a hitelesítő adatok értéke null lesz.

Tegyük fel például, hogy hitelesítő adatokra van szükség a webes adatok hitelesítés céljából történő lekéréséhez. Hacsak a webes virtuális címtár nem engedélyezi a névtelen hozzáférést, meg kell adnia a Credentials tulajdonságot hitelesítő adatok megadásához. Az alábbi példa létrehoz egy XmlReader objektumot, amely alapértelmezett hitelesítő adatokat használ XmlUrlResolver a http://localhost/bookstore/inventory.xml webhely eléréséhez.

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

Különböző hitelesítő adatokat adhat meg a különböző URI-khoz, és hozzáadhatja őket a gyorsítótárhoz. Ezek a hitelesítő adatok az XML eredeti forrásától függetlenül ellenőrzik a különböző URI-k hitelesítését. Az alábbi példa bemutatja, hogyan adhat hozzá hitelesítő adatokat a gyorsítótárhoz.

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

Biztonsági megfontolások

Az osztály használatakor vegye figyelembe az XmlResolver alábbi elemeket.

  • XmlResolver az objektumok bizalmas információkat, például felhasználói hitelesítő adatokat tartalmazhatnak. Óvatosan kell eljárnia az objektumok gyorsítótárazásakor XmlResolver , és ne adja át az XmlResolver objektumot egy nem megbízható összetevőnek.

  • Ha olyan osztálytulajdonságot tervez, amely a XmlResolver osztályt használ, a tulajdonságot csak-írásra tulajdonságnak kell definiálni. A tulajdonság használható a XmlResolver használni kívánt érték megadására, de nem használható objektum visszaadására XmlResolver .

  • Ha az alkalmazás nem megbízható kódból fogad XmlResolver objektumokat, nem feltételezheti, hogy a metódusnak GetEntity átadott URI megegyezik a ResolveUri metódus által visszaadott URI-val. Az osztályból XmlResolver származó osztályok felülbírálhatják a GetEntity metódust, és olyan adatokat adnak vissza, amelyek eltérnek az eredeti URI-ban tárolt adatoktól.

  • Az alkalmazás csökkentheti a GetEntity metódus memóriamegtagadási fenyegetéseit egy IStream olyan implementálással, amely korlátozza az olvasási bájtok számát. Ez segít elhárítani azokat a helyzeteket, amikor a rosszindulatú kód végtelen bájtfolyamot próbál átadni a GetEntity metódusnak.

Konstruktorok

Name Description
XmlResolver()

Inicializálja a XmlResolver osztály új példányát.

Tulajdonságok

Name Description
Credentials

Ha egy származtatott osztályban felül van bírálva, beállítja a webes kérések hitelesítéséhez használt hitelesítő adatokat.

FileSystemResolver

Lekéri az XML-feloldót, amely csak a fájlrendszer URI-jait oldja fel.

ThrowingResolver

Lekéri az entitásfeloldást tiltó XML-feloldót.

Metódusok

Name Description
Equals(Object)

Meghatározza, hogy a megadott objektum egyenlő-e az aktuális objektummal.

(Öröklődés forrása Object)
GetEntity(Uri, String, Type)

Ha egy származtatott osztály felül van bírálva, az URI-t egy olyan objektumhoz rendeli le, amely a tényleges erőforrást tartalmazza.

GetEntityAsync(Uri, String, Type)

Aszinkron módon leképzi az URI-t egy olyan objektumra, amely a tényleges erőforrást tartalmazza.

GetHashCode()

Ez az alapértelmezett kivonatoló függvény.

(Öröklődés forrása Object)
GetType()

Lekéri az Type aktuális példányt.

(Öröklődés forrása Object)
MemberwiseClone()

Az aktuális Objectpéldány sekély másolatát hozza létre.

(Öröklődés forrása Object)
ResolveUri(Uri, String)

Ha egy származtatott osztályban felül van bírálva, feloldja az abszolút URI-t az alap- és relatív URI-kból.

SupportsType(Uri, Type)

Lehetővé teszi a feloldó számára, hogy más típusokat ad vissza, mint Streama .

ToString()

Az aktuális objektumot jelképező sztringet ad vissza.

(Öröklődés forrása Object)

A következőre érvényes:

Lásd még