Sdílet prostřednictvím


Řešení externích prostředků

Vlastnost XmlResolver třídy XmlDocument je používána třídou XmlDocument k vyhledání prostředků, které nejsou vloženy v XML datech, jako jsou externí definice typů dokumentů (DTD), entity a schémata. Tyto položky mohou být umístěny v síti nebo na místní jednotce a identifikovat je identifikátor URI (Uniform Resource Identifier). Díky tomu může XmlDocument vyřešit EntityReference uzly, které jsou přítomné v dokumentu, a ověřit dokument podle externího DTD nebo schématu.

Plně důvěryhodný dokument XmlDocument

Vlastnost XmlResolver ovlivňuje funkčnost metody XmlDocument.Load. Následující tabulka ukazuje, jak XmlDocument.XmlResolver vlastnost funguje, když XmlDocument objekt je plně důvěryhodný. Následující tabulka ukazuje XmlDocument.Load metody, když vstup load je TextReader, String, Stream nebo URI. Tato tabulka se nevztahuje na metodu Load, pokud je XmlDocument načtený z XmlReader.

XmlResolver – vlastnost Funkce Poznámky
Vlastnost je nastavena na XmlResolver třídy, která byla dříve vytvořena a má vlastnosti již nastaveny uživatelem. XmlDocument používá XmlResolver, který je přidělen k překladu názvů souborů, k překladu odkazů na externí prostředky, jako jsou DTD, entity a schémata.

XmlResolver se také používá při řešení externích prostředků, které jsou potřeba při přidávání nebo úpravách uzlů v XmlDocument.
XmlResolver zadaný do XmlDocument je resolver, který se používá, kdykoli je třeba lokalizovat a vyřešit externí zdroje.
Vlastnost je nastavena na hodnotu null (Nothing v jazyce Microsoft Visual Basic .NET). Funkce, které vyžadují externí prostředek, se nepodporují, například vyhledání externího schématu nebo DTD. Externí entity nebudou vyřešeny a funkce úprav, jako je vkládání entitních uzlů vyžadujících řešení, nebudou podporovány. XmlDocument načte soubory jako anonymní a nepokouší se vyřešit žádné další prostředky.
Vlastnost není nastavena a zůstává ve výchozím stavu. XmlUrlResolver s přihlašovacími údaji NULL se vytvoří instance a použije XmlDocument při řešení názvů souborů, při vyhledávání externích DTD, entit a schémat a přihlašovací údaje NULL se použijí při úpravách uzlů.

Následující tabulka ukazuje XmlDocument.Load metoda, když vstup load je XmlReader a XmlDocument je plně důvěryhodný.

XmlResolver – vlastnost Funkce Poznámky
Třída XmlResolver používaná XmlDocument je stejná jako ta používaná XmlReader. XmlDocument používá XmlResolver, který byl přiřazen XmlReader.

Vlastnost XmlDocument.Resolver nelze nastavit bez ohledu na úroveň důvěryhodnosti XmlDocument , protože získává XmlResolver z XmlReader. Nelze se pokusit změnit nastavení XmlResolverXmlReaders nastavením vlastnosti XmlResolver objektu XmlDocument.
XmlReader může být XmlTextReader, XmlValidatingReader nebo vlastní psaná čtečka. Pokud čtečka podporuje řešení entit, externí entity jsou vyřešeny. Pokud předaný čtenář nepodporuje odkazy na entity, tyto odkazy nebudou vyřešeny.

Částečně důvěryhodný dokument XmlDocument

Následující tabulka ukazuje, jak XmlDocument.XmlResolver vlastnost funguje, když je objekt částečně důvěryhodný. Tato tabulka platí pro XmlDocument.Load metody, když vstup load je TextReader, String, Stream nebo URI. Tato tabulka se nevztahuje na metodu Load, pokud je XmlDocument načten z XmlReader.

XmlResolver – vlastnost Funkce Poznámky
V částečně důvěryhodném scénáři nelze vlastnost XmlResolver nastavit na nic jiného než null. XmlUrlResolver s přihlašovacími údaji null bude instanciován a použit XmlDocument při řešení názvů souborů, vyhledávání externích DTD, entit a schémat. Přihlašovací údaje null se použijí při úpravě uzlů. Toto chování je identické s chováním, pokud XmlResolver vlastnost není nastavena, ale ponechána ve výchozím stavu.

XmlDocument používá anonymní oprávnění pro všechny akce.
Vlastnost je nastavena na hodnotu null (Nothing v jazyce Microsoft Visual Basic .NET). Nejsou podporovány žádné funkce, které vyžadují externí prostředek, například vyhledání externího schématu nebo DTD. Externí entity nebudou vyřešeny a provádění editačních funkcí, jako je vkládání uzlů entit, které vyžadují řešení, není podporováno. Pokud je vlastnost null, chování je stejné bez ohledu na to, zda XmlDocument je plně důvěryhodný nebo částečně důvěryhodný.
Vlastnost není nastavena, ale je ponechána ve výchozím stavu. XmlUrlResolver s přihlašovacími údaji null bude instanciován a použit XmlDocument, když se řeší názvy souborů, vyhledávají externí DTD, entity a schémata, a přihlašovací údaje null se použijí při úpravách uzlů. XmlDocument používá anonymní oprávnění pro všechny akce.

Tato tabulka platí pro metodu XmlDocument.Load, když je vstupem do Load objekt XmlReader a XmlDocument je částečně důvěryhodný.

XmlResolver – vlastnost Funkce Poznámky
Třída XmlResolver používaná XmlDocument je stejná, kterou používá XmlReader. XmlDocument používá XmlResolver, který byl přiřazen XmlReader.

Vlastnost XmlDocument.Resolver nelze nastavit bez ohledu na úroveň důvěryhodnosti XmlDocument , protože získává XmlResolver z XmlReader. Není možné pokusit se přepsat nastavení XmlReaders a XmlResolver nastavením vlastnosti XmlResolver objektu XmlDocument.
XmlReader může být XmlTextReader, ověřující XmlReader, nebo čtečka napsaná na míru. Pokud čtečka podporuje řešení entit, externí entity jsou vyřešeny. Pokud čtenář předaný nepodporuje odkazy na entity, odkazy na entity se nepřeloží.

Nastavení XmlResolveru tak, aby obsahovalo správné přihlašovací údaje, umožňuje přístup k externím prostředkům.

Poznámka:

Neexistuje způsob, jak načíst XmlResolver vlastnost. To pomáhá zabránit uživateli v opětovném použití xmlResolveru , u kterého byly nastaveny přihlašovací údaje. Také, pokud se k načtení XmlDocument používá XmlTextReader nebo validátor a XmlDocument má nastavený rozlišovač, rozlišovače z těchto čítačů nejsou uloženy do mezipaměti XmlDocument po fázi Load, protože to také představuje bezpečnostní riziko.

Další informace najdete v části Poznámky na XmlResolver referenční stránce.

Viz také