XmlUrlResolver 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 XmlUrlResolver : System::Xml::XmlResolver
public class XmlUrlResolver : System.Xml.XmlResolver
type XmlUrlResolver = class
inherit XmlResolver
Public Class XmlUrlResolver
Inherits XmlResolver
- Öröklődés
Példák
Az alábbi példa egy XmlReader alapértelmezett hitelesítő adatokat használó példányt XmlUrlResolver hoz létre.
// Create an XmlUrlResolver with default credentials.
XmlUrlResolver resolver = new XmlUrlResolver();
resolver.Credentials = CredentialCache.DefaultCredentials;
// Create the reader.
XmlReaderSettings settings = new XmlReaderSettings();
settings.XmlResolver = resolver;
XmlReader reader =
XmlReader.Create("http://serverName/data/books.xml", settings);
' Create an XmlUrlResolver with default credentials.
Dim resolver As New XmlUrlResolver()
resolver.Credentials = CredentialCache.DefaultCredentials
' Create the reader.
Dim settings As New XmlReaderSettings()
settings.XmlResolver = resolver
Dim reader As XmlReader = _
XmlReader.Create("http://serverName/data/books.xml", settings)
Megjegyzések
XmlUrlResolver 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ó.
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 WebRequest kéréseket.
Important
XmlUrlResolver az objektumok bizalmas információkat, például felhasználói hitelesítő adatokat tartalmazhatnak. Óvatosnak kell lennie, amikor gyorsítótárazza XmlUrlResolver az objektumokat, és ne adja át XmlUrlResolver az objektumokat egy nem megbízható összetevőnek.
DTD-k feloldása
Ha egy XML-olvasó (XmlReader) egy külső DTD-t tartalmazó XML-fájlt olvas be, meghívja a metódust a XmlUrlResolver.GetEntityAsync DTD stream-ábrázolásának lekéréséhez. Ha a DTD URI-ja relatív URI, az XML-olvasó meghívja a XmlUrlResolver.ResolveUri metódust, és abszolút URI-t ad vissza a megadott relativeUri és baseURi paraméterekhez. Ha a XmlUrlResolver függvény nem tudja, hogyan oldhatja fel az URI-t, a függvény a következőt adja nullvissza:
A XmlUrlResolver.GetEntity metódus a tulajdonságban található információkat használja az Credentials erőforráshoz való hozzáféréshez. Biztonsági okokból a tulajdonságnak nincs get tartozéka. Felülírás XmlResolveresetén a GetEntity az a metódus, amely a hitelesítő adatok adatait használja a Hitelesítő adatok tulajdonságban.
Az összes többi XML-erőforrás feloldása nagyon hasonló a DTD-k feloldásához. XmlResolver egyezteti a kapcsolatot a külső erőforrással, és visszaadja Stream a tartalom reprezentációját. A hívást XmlResolver kezdeményező objektum értelmezi a streamet.
Az XmlUrlResolver osztály kiterjesztése
Az osztály alapértelmezett viselkedése egy XmlUrlResolver XML-adaterőforrás feloldása a forrásból, nem pedig a gyorsítótárból. Bizonyos esetekben az adaterőforrás gyorsítótárból való feloldása javíthatja az alkalmazások teljesítményét az adaterőforrás kiszolgálójára való mentéssel. Az itt mért teljesítménynövekedést mérlegelni kell a up-to-date tartalom szükségességének függvényében.
Az alábbi példa egy új osztályt bővít ki XmlUrlResolver és hoz létre, XmlCachingResolverhogy lekérje az erőforrásokat a gyorsítótárból. Ehhez felül kell bírálni a XmlUrlResolver.Credentials tulajdonságot és a metódust XmlUrlResolver.GetEntity .
class XmlCachingResolver : XmlUrlResolver
{
bool enableHttpCaching;
ICredentials credentials;
//resolve resources from cache (if possible) when enableHttpCaching is set to true
//resolve resources from source when enableHttpcaching is set to false
public XmlCachingResolver(bool enableHttpCaching)
{
this.enableHttpCaching = enableHttpCaching;
}
public override ICredentials Credentials
{
set
{
credentials = value;
base.Credentials = value;
}
}
public override object GetEntity(Uri absoluteUri, string role, Type ofObjectToReturn)
{
if (absoluteUri == null)
{
throw new ArgumentNullException("absoluteUri");
}
//resolve resources from cache (if possible)
if (absoluteUri.Scheme == "http" && enableHttpCaching && (ofObjectToReturn == null || ofObjectToReturn == typeof(Stream)))
{
WebRequest webReq = WebRequest.Create(absoluteUri);
webReq.CachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.Default);
if (credentials != null)
{
webReq.Credentials = credentials;
}
WebResponse resp = webReq.GetResponse();
return resp.GetResponseStream();
}
//otherwise use the default behavior of the XmlUrlResolver class (resolve resources from source)
else
{
return base.GetEntity(absoluteUri, role, ofObjectToReturn);
}
}
}
Class XmlCachingResolver
Inherits XmlUrlResolver
Dim enableHttpCaching As Boolean
Public Shadows Credentials As ICredentials
'resolve resources from cache (if possible) when enableHttpCaching is set to true
'resolve resources from source when enableHttpcaching is set to false
Public Sub New(ByVal enableHttpCaching As Boolean)
Me.enableHttpCaching = enableHttpCaching
End Sub
Public Shadows Function GetEntity(ByVal absoluteUri As Uri, ByVal role As String, ByVal returnType As Type) As Object
If absoluteUri = Nothing Then
Throw New ArgumentNullException("absoluteUri")
End If
'resolve resources from cache (if possible)
If absoluteUri.Scheme = "http" And enableHttpCaching And (returnType Is GetType(Nullable) Or returnType Is GetType(Stream)) Then
Dim webReq As WebRequest = WebRequest.Create(absoluteUri)
webReq.CachePolicy = New HttpRequestCachePolicy(HttpRequestCacheLevel.Default)
If Not (Credentials Is Nothing) Then
webReq.Credentials = Credentials
End If
Dim resp As WebResponse = webReq.GetResponse()
Return resp.GetResponseStream()
'otherwise use the default behavior of the XmlUrlResolver class (resolve resources from source)
Else
Return MyBase.GetEntity(absoluteUri, role, returnType)
End If
End Function
End Class
Az osztály gyorsítótárazási viselkedése XmlCachingResolver implementálva van a GetEntity metódusban. Ez új WebRequest és HttpRequestCachePolicy objektumok létrehozásával történik. Az HttpRequestCachePolicy objektum az enumerálás tagjával Default jön létreHttpRequestCacheLevel.
Az CachePolicy objektum tulajdonsága az WebRequest objektummal HttpRequestCachePolicy van beállítva.
Az osztály egy példánya XmlCachingResolver a BooleanenableHttpCaching. Ha ez az érték be van állítva true, a példány felold egy erőforrást az alapértelmezett gyorsítótárból, ha lehetséges. Ha enableHttpCaching be van állítva false, a példány az alapértelmezett viselkedést használja, és feloldja az erőforrásokat a forrásukból.
Note
Ez a példa a .NET-keretrendszer XML-osztályainak bővíthetőségét használja. Más osztályok bővíthetők és testre szabhatók egy adott alkalmazás igényeinek megfelelően.
Konstruktorok
| Name | Description |
|---|---|
| XmlUrlResolver() |
Inicializálja a XmlUrlResolver osztály új példányát. |
Tulajdonságok
| Name | Description |
|---|---|
| CachePolicy |
Lekéri vagy beállítja a mögöttes WebRequest objektum gyorsítótárszabályzatát. |
| Credentials |
Beállítja a webes kérelmek hitelesítéséhez használt hitelesítő adatokat. |
| Proxy |
Lekéri vagy beállítja a mögöttes WebRequest objektum hálózati proxyjá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) |
URI-t képez le egy olyan objektumra, 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) |
Feloldja az abszolút URI-t az alap- és relatív URI-kból. |
| 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. (Öröklődés forrása XmlResolver) |
| SupportsType(Uri, Type) |
Lehetővé teszi a feloldó számára, hogy más típusokat ad vissza, mint Streama . (Öröklődés forrása XmlResolver) |
| ToString() |
Az aktuális objektumot jelképező sztringet ad vissza. (Öröklődés forrása Object) |