Delen via


Resolutie van externe resources

De eigenschap XmlResolver van het XmlDocument wordt door de XmlDocument-klasse gebruikt om resources te zoeken die niet inline zijn in de XML-gegevens, zoals definities van externe documenttypen (DTD's), entiteiten en schema's. Deze items kunnen zich op een netwerk of op een lokaal station bevinden en kunnen worden geïdentificeerd met een URI (Uniform Resource Identifier). Hierdoor kan XmlDocument EntityReference-knooppunten die aanwezig zijn in het document oplossen en het document valideren op basis van de externe DTD of het schema.

Volledig vertrouwde XmlDocument

De eigenschap XmlResolver is van invloed op de functionaliteit van de methode XmlDocument.Load . In de onderstaande tabel staat hoe de eigenschap XmlDocument.XmlResolver werkt wanneer het XmlDocument-object volledig vertrouwd is. In de volgende tabel ziet u de xmlDocument.Load-methoden wanneer de invoer voor de load een TextReader, String, Stream of URI is. Deze tabel is niet van toepassing op de load-methode als het XmlDocument wordt geladen vanuit een XmlReader.

XmlResolver-eigenschap Functie Opmerkingen
De eigenschap is ingesteld op een XmlResolver-klasse die eerder is gemaakt en waarvoor de gebruiker al eigenschappen heeft ingesteld. XmlDocument maakt gebruik van xmlResolverdie wordt gegeven om bestandsnamen op te lossen, om verwijzingen naar externe resources, zoals DTD's, entiteiten en schema's, op te lossen.

XmlResolver wordt ook gebruikt bij het omzetten van externe resources die nodig zijn bij het toevoegen of bewerken van knooppunten in het XmlDocument.
De XmlResolver die aan het XmlDocument wordt gegeven, is de resolver die wordt gebruikt wanneer externe resources moeten worden gevonden en opgelost.
De eigenschap is ingesteld op null (niets in Microsoft Visual Basic .NET). Functies waarvoor een externe resource is vereist, worden niet ondersteund, zoals het zoeken naar een extern schema of DTD. Externe entiteiten worden niet opgelost en het uitvoeren van bewerkingsfuncties, zoals het invoegen van entiteitsknooppunten waarvoor oplossing is vereist, worden niet ondersteund. XmlDocument laadt bestanden als anoniem en probeert geen andere resources op te lossen.
De eigenschap is niet ingesteld, maar bevindt zich in de standaardstaat. Een XmlUrlResolver met NULL-referenties wordt geïnstantieerd en gebruikt door het XmlDocument bij het omzetten van bestandsnamen, het zoeken van externe DTD's, entiteiten en schema's en null-referenties worden gebruikt bij het bewerken van knooppunten.

In de volgende tabel ziet u de methode XmlDocument.Load wanneer de invoer voor de Load een XmlReader is en de XmlDocument volledig vertrouwd is.

XmlResolver-eigenschap Functie Opmerkingen
De xmlResolver-klasse die door het XmlDocument wordt gebruikt, is dezelfde klasse die wordt gebruikt door de XmlReader. Het XmlDocument maakt gebruik van de XmlResolver die is toegewezen aan xmlReader.

De eigenschap XmlDocument.Resolver kan niet worden ingesteld, ongeacht het xmlDocument-vertrouwensniveau, omdat er een XmlResolver van xmlReader wordt opgehaald. U kunt niet proberen de instellingen van de XmlReaders' XmlResolver te overschrijven door de XmlResolver-eigenschap van het XmlDocument in te stellen.
De XmlReader kan de XmlTextReader, XmlValidatingReader of een aangepaste geschreven lezer zijn. Als de gebruikte reader ondersteuning biedt voor entiteitsresolutie, worden externe entiteiten opgelost. Als de lezer waarop een beroep wordt gedaan geen ondersteuning biedt voor entiteitsverwijzingen, worden entiteitsverwijzingen niet verwerkt.

Semi-Trusted XmlDocument

In de volgende tabel ziet u hoe de eigenschap XmlDocument.XmlResolver werkt wanneer het object semi-vertrouwd is. Deze tabel is van toepassing op de xmlDocument.Load-methoden wanneer de invoer voor de load een TextReader, String, Stream of URI is. Deze tabel is niet van toepassing op de load-methode als het XmlDocument wordt geladen vanuit een XmlReader.

XmlResolver-eigenschap Functie Opmerkingen
In het semi-vertrouwde scenario kan de eigenschap XmlResolver niet worden ingesteld op iets anders dan null. Een XmlUrlResolver met null-referenties wordt geïnstantieerd en gebruikt door het XmlDocument bij het omzetten van bestandsnamen, het zoeken van externe DTD's, entiteiten en schema's en null-referenties worden gebruikt bij het bewerken van knooppunten. Dit gedrag is identiek aan het gedrag wanneer de eigenschap XmlResolver niet is ingesteld, maar de standaardstatus heeft.

Het XmlDocument maakt gebruik van anonieme machtigingen voor alle acties.
De eigenschap is ingesteld op null (niets in Microsoft Visual Basic .NET). Er worden geen functies ondersteund waarvoor een externe resource is vereist, zoals het zoeken naar een extern schema of DTD. Externe entiteiten worden niet opgelost en het uitvoeren van bewerkingsfuncties zoals het invoegen van entiteitsknooppunten waarvoor oplossing is vereist, worden niet ondersteund. Wanneer de eigenschap null is, is het gedrag hetzelfde, ongeacht of het XmlDocument volledig vertrouwd of semi-vertrouwd is.
De eigenschap is niet ingesteld, maar bevindt zich in de standaardstatus. Een XmlUrlResolver met null-referenties wordt geïnstantieerd en gebruikt door het XmlDocument bij het omzetten van bestandsnamen, het zoeken van externe DTD's, entiteiten en schema's en null-referenties worden gebruikt bij het bewerken van knooppunten. Het XmlDocument maakt gebruik van anonieme machtigingen voor alle acties.

Deze tabel is van toepassing op de methode XmlDocument.Load wanneer de invoer voor de Load een XmlReader is en het XmlDocument semi-vertrouwd is.

XmlResolver-eigenschap Functie Opmerkingen
De xmlResolver-klasse die door het XmlDocument wordt gebruikt, is dezelfde klasse die wordt gebruikt door de XmlReader. Het XmlDocument maakt gebruik van de XmlResolver die is toegewezen aan xmlReader.

De eigenschap XmlDocument.Resolver kan niet worden ingesteld, ongeacht het xmlDocument-vertrouwensniveau, omdat er een XmlResolver van xmlReader wordt opgehaald. U kunt de instellingen van xmlReaders XmlResolver niet overschrijven door de eigenschap XmlResolver van het XmlDocument in te stellen.
De XmlReader kan de XmlTextReader, een validerende reader XmlReader, of een zelfgeschreven reader zijn. Als de gebruikte lezer ondersteuning biedt voor entiteitsomzetting, worden externe entiteiten omgezet. Als de doorgegeven lezer geen ondersteuning biedt voor entiteitsreferenties, worden entiteitsreferenties niet opgelost.

Het instellen van de XmlResolver met de juiste referenties biedt toegang tot externe bronnen.

Notitie

De eigenschap XmlResolver kan niet worden opgehaald. Dit helpt voorkomen dat een gebruiker een XmlResolver opnieuw gebruikt waarvoor referenties zijn ingesteld. Als een XmlTextReader of validerende XmlReader wordt gebruikt om het XmlDocument te laden en de XmlDocument een resolver heeft die is ingesteld, worden de resolvers van deze lezers niet gecached door de XmlDocument na de laadfase, omdat dit ook een beveiligingsrisico vormt.

Zie de sectie Opmerkingen van de XmlResolver referentiepagina voor meer informatie.

Zie ook