XmlUrlResolver Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Menyelesaikan sumber daya XML eksternal yang dinamai oleh Pengidentifikasi Sumber Daya Seragam (URI).
public ref class XmlUrlResolver : System::Xml::XmlResolver
public class XmlUrlResolver : System.Xml.XmlResolver
type XmlUrlResolver = class
inherit XmlResolver
Public Class XmlUrlResolver
Inherits XmlResolver
- Warisan
Contoh
Contoh berikut membuat XmlReader yang menggunakan XmlUrlResolver dengan kredensial default.
// 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)
Keterangan
XmlUrlResolver digunakan untuk mengatasi sumber daya XML eksternal seperti entitas, definisi jenis dokumen (DTD) atau skema. Ini juga digunakan untuk memproses menyertakan dan mengimpor elemen yang ditemukan dalam lembar gaya Extensible StyleSheet Language (XSL) atau skema bahasa definisi Skema XML (XSD).
XmlUrlResolver adalah resolver default untuk semua kelas di namespace System.Xml. Ini mendukung protokol file:// dan http://, serta permintaan dari kelas WebRequest.
Penting
XmlUrlResolver objek dapat berisi informasi sensitif seperti kredensial pengguna. Anda harus berhati-hati ketika Anda menyimpan XmlUrlResolver objek dan tidak boleh meneruskan XmlUrlResolver objek ke komponen yang tidak tepercaya.
Mengatasi DTD
Jika pembaca XML (XmlReader) membaca file XML yang berisi DTD eksternal, ia memanggil XmlUrlResolver.GetEntityAsync metode untuk mendapatkan representasi aliran DTD. Jika URI DTD adalah URI relatif, pembaca XML memanggil XmlUrlResolver.ResolveUri metode dan mengembalikan URI absolut untuk parameter dan baseURi yang diberikanrelativeUri.
XmlUrlResolver Jika tidak tahu cara mengatasi URI, URI akan nullmengembalikan .
Metode ini XmlUrlResolver.GetEntity menggunakan informasi dalam Credentials properti yang sesuai untuk mendapatkan akses ke sumber daya. Tidak ada get aksesor ke properti ini karena alasan keamanan. Saat menimpa XmlResolver, GetEntity adalah metode yang menggunakan informasi kredensial di properti Kredensial .
Menyelesaikan semua sumber daya XML lainnya sangat mirip dengan menyelesaikan DTD. XmlResolver menegosiasikan koneksi dengan sumber daya eksternal dan mengembalikan Stream representasi konten. Objek yang melakukan panggilan untuk XmlResolver menginterpretasikan aliran.
Memperluas kelas XmlUrlResolver
Perilaku XmlUrlResolver default kelas adalah menyelesaikan sumber daya data XML dari sumbernya, bukan dari cache. Dalam beberapa kasus, menyelesaikan sumber daya data dari cache dapat meningkatkan performa aplikasi dengan menyimpan perjalanan ke server sumber daya data. Perolehan performa di sini harus ditimbang berdasarkan kebutuhan akan konten up-to-tanggal.
Contoh berikut memperluas XmlUrlResolver dan membangun kelas baru, XmlCachingResolver, untuk mengambil sumber daya dari cache. Ini dilakukan dengan mengesampingkan XmlUrlResolver.Credentials properti dan XmlUrlResolver.GetEntity metode .
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
Perilaku penembolokan XmlCachingResolver kelas diimplementasikan dalam GetEntity metode . Ini dilakukan dengan membuat objek dan HttpRequestCachePolicy baruWebRequest. Objek HttpRequestCachePolicy dibuat menggunakan Default anggota HttpRequestCacheLevel enumerasi.
Properti CachePolicyWebRequest objek diatur dengan HttpRequestCachePolicy objek .
Instans XmlCachingResolver kelas dibuat dengan BooleanenableHttpCaching. Ketika nilai ini diatur ke true, instans menyelesaikan sumber daya dari cache default jika memungkinkan. Ketika enableHttpCaching diatur ke false, instans menggunakan perilaku default dan menyelesaikan sumber daya dari sumbernya.
Nota
Contoh ini memanfaatkan ekstensibilitas kelas XML di .NET Framework. Kelas lain dapat diperluas dan disesuaikan agar sesuai dengan kebutuhan aplikasi tertentu.
Konstruktor
| Nama | Deskripsi |
|---|---|
| XmlUrlResolver() |
Menginisialisasi instans baru dari kelas XmlUrlResolver. |
Properti
| Nama | Deskripsi |
|---|---|
| CachePolicy |
Mendapatkan atau mengatur kebijakan cache untuk objek yang mendasar WebRequest . |
| Credentials |
Mengatur kredensial yang digunakan untuk mengautentikasi permintaan web. |
| Proxy |
Mendapatkan atau mengatur proksi jaringan untuk objek yang mendasar WebRequest . |
Metode
| Nama | Deskripsi |
|---|---|
| Equals(Object) |
Menentukan apakah objek yang ditentukan sama dengan objek saat ini. (Diperoleh dari Object) |
| GetEntity(Uri, String, Type) |
Memetakan URI ke objek yang berisi sumber daya aktual. |
| GetEntityAsync(Uri, String, Type) |
Secara asinkron memetakan URI ke objek yang berisi sumber daya aktual. |
| GetHashCode() |
Berfungsi sebagai fungsi hash default. (Diperoleh dari Object) |
| GetType() |
Mendapatkan Type instans saat ini. (Diperoleh dari Object) |
| MemberwiseClone() |
Membuat salinan dangkal dari Objectsaat ini. (Diperoleh dari Object) |
| ResolveUri(Uri, String) |
Menyelesaikan URI absolut dari URI dasar dan relatif. |
| ResolveUri(Uri, String) |
Ketika ditimpa dalam kelas turunan, menyelesaikan URI absolut dari URI dasar dan relatif. (Diperoleh dari XmlResolver) |
| SupportsType(Uri, Type) |
Memungkinkan resolver mengembalikan jenis selain Stream. (Diperoleh dari XmlResolver) |
| ToString() |
Mengembalikan string yang mewakili objek saat ini. (Diperoleh dari Object) |