Lösa externa resurser
XmlResolver-egenskapen för XmlDocument används av klassen XmlDocument för att hitta resurser som inte är infogade i XML-data, till exempel externa dokumenttypsdefinitioner (DTD), entiteter och scheman. Dessa objekt kan finnas i ett nätverk eller på en lokal enhet och kan identifieras av en URI (Uniform Resource Identifier). Detta gör att XmlDocument kan matcha EntityReference-noder som finns i dokumentet och verifiera dokumentet enligt den externa DTD:n eller schemat.
Fullständigt betrodd XmlDocument
XmlResolver-egenskapen påverkar funktionerna i metoden XmlDocument.Load. Tabellen nedan visar hur egenskapen XmlDocument.XmlResolver fungerar när XmlDocument-objektet är fullständigt betrott. I följande tabell visas metoderna XmlDocument.Load när indata till Load är en TextReader, String, Stream eller URI. Den här tabellen gäller inte för metoden Load om XmlDocument läses in från en XmlReader.
XmlResolver-egenskap | Funktion | Kommentar |
---|---|---|
Egenskapen är inställd på en XmlResolver-klass som tidigare har skapats och har egenskaper som redan har angetts av användaren. | XmlDocument använder den XmlResolver som ges för att matcha filnamn för att matcha referenser till externa resurser som DTD:er, entiteter och scheman. XmlResolver används också för att matcha externa resurser som behövs när du lägger till eller redigerar noder i XmlDocument. |
XmlResolver som ges till XmlDocument är den lösning som används när externa resurser måste finnas och matchas. |
Egenskapen är inställd på null (Ingenting i Microsoft Visual Basic .NET). | Funktioner som kräver en extern resurs stöds inte, till exempel att hitta ett externt schema eller DTD. Externa entiteter kommer inte heller att matchas och att utföra redigeringsfunktioner, till exempel infoga entitetsnoder som kräver lösning, stöds inte. | XmlDocument läser in filer som anonyma och försöker inte lösa några andra resurser. |
Egenskapen har inte angetts, men lämnas i standardtillståndet. | En XmlUrlResolver med NULL-autentiseringsuppgifter instansieras och används av XmlDocument när filnamn matchas, externa DTD:er, entiteter och scheman och null-autentiseringsuppgifter används vid redigering av noder. |
I följande tabell visas metoden XmlDocument.Load när indata till Load är en XmlReader och XmlDocument är fullständigt betrott.
XmlResolver-egenskap | Funktion | Kommentar |
---|---|---|
XmlResolver-klassen som används av XmlDocument är samma klass som används av XmlReader. | XmlDocument använder den XmlResolver som tilldelades XmlReader. Egenskapen XmlDocument.Resolver kan inte anges, oavsett xmldocument-förtroendenivån , eftersom den hämtar en XmlResolver från XmlReader. Du kan inte försöka åsidosätta inställningarna för XmlReaders XmlResolver genom att ange xmlresolver-egenskapen för XmlDocument. |
XmlReader kan vara XmlTextReader, XmlValidatingReader eller en anpassad läsare. Om läsaren som används stöder entitetsmatchning löses externa entiteter. Om läsaren som skickas inte stöder entitetsreferenser löses inte entitetsreferenser. |
Semi-Trusted XmlDocument
Följande tabell visar hur egenskapen XmlDocument.XmlResolver fungerar när objektet är halvbetrott. Den här tabellen gäller för metoderna XmlDocument.Load när indata till Load är en TextReader, String, Stream eller URI. Den här tabellen gäller inte för metoden Load om XmlDocument läses in från en XmlReader.
XmlResolver-egenskap | Funktion | Kommentar |
---|---|---|
I det halvbetrotta scenariot kan egenskapen XmlResolver inte anges till något annat än null. | En XmlUrlResolver med null-autentiseringsuppgifter instansieras och används av XmlDocument när filnamn matchas, externa DTD:er, entiteter och scheman och null-autentiseringsuppgifter används vid redigering av noder. | Det här beteendet är identiskt med beteendet när xmlresolver-egenskapen inte har angetts, utan lämnas i sitt standardtillstånd. XmlDocument använder anonyma behörigheter för alla åtgärder. |
Egenskapen är inställd på null (Ingenting i Microsoft Visual Basic .NET). | Inga funktioner som kräver en extern resurs stöds, till exempel att hitta ett externt schema eller DTD. Externa entiteter kommer inte heller att matchas och att utföra redigeringsfunktioner som att infoga entitetsnoder som kräver lösning stöds inte. | När egenskapen är null är beteendet detsamma oavsett om XmlDocument är fullständigt betrott eller halvbetrott. |
Egenskapen har inte angetts, men lämnas i standardtillståndet. | En XmlUrlResolver med null-autentiseringsuppgifter instansieras och används av XmlDocument när filnamn matchas, externa DTD:er, entiteter och scheman och null-autentiseringsuppgifter används vid redigering av noder. | XmlDocument använder anonyma behörigheter för alla åtgärder. |
Den här tabellen gäller för metoden XmlDocument.Load när indata till Load är en XmlReader och XmlDocument är halvbetrott.
XmlResolver-egenskap | Funktion | Kommentar |
---|---|---|
XmlResolver-klassen som används av XmlDocument är samma som används av XmlReader. | XmlDocument använder den XmlResolver som tilldelades XmlReader. Egenskapen XmlDocument.Resolver kan inte anges, oavsett xmldocument-förtroendenivån , eftersom den hämtar en XmlResolver från XmlReader. Du kan inte försöka åsidosätta inställningarna för XmlReaders XmlResolver genom att ange xmlresolver-egenskapen för XmlDocument. |
XmlReader kan vara XmlTextReader, validera XmlReadereller en anpassad skriven läsare. Om läsaren som används stöder entitetsmatchning löses externa entiteter. Om läsaren som skickas in inte stöder entitetsreferenser löses inte entitetsreferenser. |
Om du anger att XmlResolver ska innehålla rätt autentiseringsuppgifter kan du komma åt externa resurser.
Kommentar
Det finns inget sätt att hämta egenskapen XmlResolver . Detta förhindrar att en användare återanvänder en XmlResolver som autentiseringsuppgifterna har angetts för. Om en XmlTextReader eller validering XmlReader används för att läsa in XmlDocument och XmlDocument har en lösning som har angetts, cachelagras inte matcharna från dessa läsare av XmlDocument efter belastningsfasen , eftersom detta också utgör en säkerhetsrisk.
Mer information finns i avsnittet Kommentarer på XmlResolver referenssidan.