Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Свойство XmlResolver класса XmlDocument используется классом XmlDocument для поиска ресурсов, не встроенных в XML-данные, таких как внешние определения DTD, сущности и схемы. Эти элементы могут находиться в сети или на локальном диске, и могут быть найдены с помощью URI. Это позволяет классу XmlDocument разрешать имеющиеся в документе узлы EntityReference и проверять документ на соответствие внешнему определению DTD или схеме.
Полностью доверенный XmlDocument
Свойство XmlResolver влияет на функциональность метода XmlDocument.Load. В следующей таблице показано, как работает свойство XmlDocument.XmlResolver, если объект XmlDocument является полностью доверенным. В следующей таблице показаны методы XmlDocument.Load, когда входные данные для Load — это TextReader, String, Stream или URI. Эта таблица не применяется к методу Load, если XmlDocument загружается из XmlReader.
| Свойство XmlResolver | Функция | Примечания. |
|---|---|---|
| Этому свойству в качестве значения присваивается класс XmlResolver, который уже создан ранее и свойства которого уже заданы пользователем. | Класс XmlDocument использует предоставленный XmlResolver для разрешения имен файлов, а также ссылок на внешние ресурсы, такие как DTD, сущности и схемы. Класс XmlResolver также используется при разрешении внешних ресурсов, которые задействуются при добавлении или изменении узлов в объекте XmlDocument. |
Класс XmlResolver, переданный классу XmlDocument, выполняет роль сопоставителя для поиска и разрешения внешних ресурсов. |
| Это свойство имеет значение NULL (или Nothing в Microsoft Visual Basic .NET). | Возможности, которым требуется внешний ресурс, не поддерживаются, например нахождение внешней схемы или определения DTD. Внешние компоненты также не будут разрешаться, и выполнение таких функций редактирования, как вставка узлов сущностей, которые требуют разрешения, не поддерживается. | Класс XmlDocument загружает файлы анонимно и не пытается разрешать какие-либо другие ресурсы. |
| Свойство не устанавливается, а оставляется в состоянии по умолчанию. | При разрешении имен файлов, поиске внешних DTD, сущностей и схем, XmlDocument создает и использует экземпляр XmlUrlResolver с учетными данными, равными NULL. Также учетные данные NULL используются при редактировании узлов. |
В следующей таблице показан метод XmlDocument.Load, который принимает в качестве входных данных для Load объект XmlReader, когда XmlDocument является полностью доверенным.
| XmlResolver-свойство | Функция | Примечания. |
|---|---|---|
| Класс XmlDocument использует тот же класс XmlResolver, что и объект XmlReader. | В XmlDocument используется XmlResolver, назначенный ранее для XmlReader. Вы не можете установить свойство XmlDocument.Resolver вне зависимости от уровня доверия XmlDocument, поскольку оно получает значение XmlResolver из XmlReader. Вы не можете переопределить параметры XmlResolver класса XmlReader, устанавливая свойство XmlResolver для класса XmlDocument. |
В качестве XmlReader можно использовать XmlTextReader, XmlValidatingReader или пользовательский ридер. Если используемый ридер поддерживает разрешение сущностей, внешние сущности разрешаются. Если переданный модуль чтения не поддерживает ссылки на сущности, то ссылки на сущности не разрешаются. |
Полудоверенный XmlDocument
В таблице ниже показано, как работает свойство XmlDocument.XmlResolver, если объект является полудоверенным. Эта таблица применима к методам XmlDocument.Load, если входными данными метода Load являются объекты TextReader, String, Stream или URI. Эта таблица не применяется к методу Load, если XmlDocument загружается из XmlReader.
| XmlResolver свойство | Функция | Примечания. |
|---|---|---|
| В случае неполного доверия свойству XmlResolver может быть задано только значение NULL. | При разрешении имен, поиске внешних определений DTD, сущностей и схем объект XmlDocument создает и использует экземпляр класса XmlUrlResolver, устанавливая для его учетных данных значение NULL. Также учетные данные со значениями NULL применяются при редактировании узлов. | Он действует точно так же, если свойство XmlResolver не задано, то есть оставлено в состоянии по умолчанию. XmlDocument использует для всех действий анонимные разрешения. |
| Это свойство имеет значение NULL (или Nothing в Microsoft Visual Basic .NET). | Функции, которым требуется внешний ресурс, не поддерживаются, например обнаружение внешней схемы или определения DTD. Внешние сущности также не будут разрешаться, а такие действия по изменению, как вставка узлов сущностей, которые требуют разрешения, не поддерживаются. | Если это свойство имеет значение NULL, поведение остается неизменным независимо от уровня доверия XmlDocument. |
| Свойство не устанавливается, а оставляется в состоянии по умолчанию. | XmlDocument создает и использует экземпляр класса XmlUrlResolver с пустыми учетными данными при разрешении имен файлов, поиске внешних DTD, сущностей и схем, а также с пустыми учетными данными при редактировании узлов. | XmlDocument использует для всех действий анонимные разрешения. |
Эта таблица применяется к методу XmlDocument.Load, когда входными данными для Load является объект XmlReader, а объект XmlDocument является полудоверенным.
| XmlResolver, свойство | Функция | Примечания. |
|---|---|---|
| Класс XmlDocument использует тот же класс XmlResolver, что и объект XmlReader. | В XmlDocument используется XmlResolver, назначенный ранее для XmlReader. Вы не можете установить свойство XmlDocument.Resolver вне зависимости от уровня доверия XmlDocument, поскольку оно получает значение XmlResolver из XmlReader. Нельзя переопределять параметры XmlResolver класса XmlReader, устанавливая свойство XmlResolver для класса XmlDocument. |
В качестве XmlReader можно использовать XmlTextReader, проверяющий XmlReader или пользовательский модуль чтения данных. Если используемое средство чтения поддерживает разрешение сущностей, внешние сущности разрешаются. Если переданный объект чтения не поддерживает ссылки на сущности, тогда ссылки на сущности не обрабатываются. |
Если настроить класс XmlResolver так, чтобы он содержал корректные учетные данные, можно получить доступ к внешним ресурсам.
Примечание.
Вы не можете получить свойство XmlResolver. Это защищает от повторного использования свойства XmlResolver, для которого уже заданы учетные данные. Кроме того, если используется объект XmlTextReader или происходит валидация с помощью XmlReader для загрузки XmlDocument, и у этого XmlDocument задан резолвер, резолверы из этих модулей чтения не кэшируются объектом XmlDocument после фазы загрузки (Load), так как это представляет угрозу безопасности.
Дополнительные сведения см. в подразделе "Примечания" на справочной странице XmlResolver.