Поделиться через


Загрузка данных из модуля чтения

Если XML-документ загружен с помощью метода Load и параметра XmlReader, его поведение отличается от поведения загруженных данных других форматов. Если модуль чтения находится в начальном состоянии, метод Load получает все его содержимое и строит модель XML DOM на основе всех данных модуля чтения.

Если модуль чтения уже позиционирован на одном из узлов документа и передается методу Load, то метод Load пытается считать текущий узел и все его одноуровневые элементы вплоть до закрывающего тега, закрывающего текущую глубину в памяти. Успех попытки метода Load зависит от узла, на котором находится модуль чтения при попытке загрузки, когда метод Load проверяет, что XML-документ из модуля чтения правильного формата. Если XML-документ неправильного формата, метод Load вызывает исключение. Например, следующий набор узлов содержит два корневых элемента, XML-документ неправильного формата, и метод Load вызывает исключение.

  • Узел Comment, за которым следует узел Element, еще один узел Element и узел EndElement.

Следующий набор узлов создает неполную модель DOM, поскольку отсутствует корневой элемент.

  • Узел Comment, за которым следует узел ProcessingInstruction, еще один узел Comment и узел EndElement.

В этом случае исключения не возникает, и данные загружаются. В верхнюю часть этих узлов можно добавить корневой элемент и создать XML-документ правильного формата, который можно сохранить без ошибки.

Если модуль чтения расположен на конечном узле, недопустимом для корневого уровня документа (например, пробел или узел атрибута), он продолжает читать, пока не окажется на узле, который можно использовать в качестве корневого. Документ начинает загружаться в этой точке.

По умолчанию метод Load не проверяет допустимость XML с помощью определения типа документа (DTD) или проверки схемы. Он только проверяет правильность формата XML-документа. Чтобы выполнялась проверка, необходимо создать объект XmlReader с помощью класса XmlReaderSettings. Класс XmlReader может применять проверку с помощью DTD или XSD-схемы. Свойство ValidationType класса XmlReaderSettings определяет, применяет ли экземпляр XmlReader принудительную проверку. Дополнительные сведения о проверке данных XML см. в подразделе примечаний на справочной странице XmlReader.

См. также