XmlResolver Osztály
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
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) |