Производит проверку возможности чтения из объекта ЧтениеXML значения. Данный метод получает тип данных XML из объекта ЧтениеXML аналогично методу ПолучитьXMLТип, а затем пытается определить, имеется ли соответствующий тип 1С:Предприятия аналогично тому, как это делает метод ИзXMLТипа.
Синтаксис
ВозможностьЧтенияXML(<ЧтениеXML>)Полное описание, параметры и ограничения
СериализаторXDTO.ВозможностьЧтенияXML (XDTOSerializer.CanReadXML)
СериализаторXDTO (XDTOSerializer)
ВозможностьЧтенияXML (CanReadXML)
Доступен, начиная с версии 8.1.
Синтаксис:
ВозможностьЧтенияXML(<ЧтениеXML>)
Параметры:
<ЧтениеXML> (обязательный)
Тип: ЧтениеУзловDOM, ЧтениеFastInfoset, ЧтениеXML.
Объект, через который производится чтение XML.
Возвращаемое значение:
Тип: Булево.
Истина - тип 1С:Предприятия существует; Ложь - в противном случае.
Описание:
Производит проверку возможности чтения из объекта ЧтениеXML значения.
Данный метод получает тип данных XML из объекта ЧтениеXML аналогично методу ПолучитьXMLТип, а затем пытается определить, имеется ли соответствующий тип 1С:Предприятия аналогично тому, как это делает метод ИзXMLТипа.
Доступность:
Тонкий клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
Примечание:
Метод не производит чтения. Он определяет возможность чтения указанного типа в текущем положении объекта чтения.
Использование в версии:
Доступен, начиная с версии 8.1.
Методическая информация
Практические примеры
Проверить XML-тип в текущей позиции до чтения числа
ЧтениеXML — курсор. Сначала находим начало элемента, затем проверяем возможность сопоставления типа и только потом читаем значение.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Используется собственный XML числа 42, созданный с явным назначением типа.
Не добавляйте лишний Прочитать между диагностикой начала элемента и ПрочитатьXML: это может сдвинуть курсор внутрь значения.
Сериализатор = Новый СериализаторXDTO;
Запись = Новый ЗаписьXML;
Запись.УстановитьСтроку();
Попытка
Сериализатор.ЗаписатьXML(Запись, 42, НазначениеТипаXML.Явное);
XML = Запись.Закрыть();
Исключение
Запись.Закрыть();
ВызватьИсключение;
КонецПопытки;
Чтение = Новый ЧтениеXML;
Чтение.УстановитьСтроку(XML);
Попытка
НайденЭлемент = Ложь;
Пока Чтение.Прочитать() Цикл
Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
НайденЭлемент = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
Если Не НайденЭлемент Тогда
ВызватьИсключение "В учебном XML нет элемента значения";
КонецЕсли;
ТипXML = Сериализатор.ПолучитьXMLТип(Чтение);
Если ТипXML = Неопределено Тогда
ВызватьИсключение "Тип не определяется в текущей позиции";
КонецЕсли;
Сообщить(Сериализатор.ВозможностьЧтенияXML(Чтение));
Сообщить(Сериализатор.ИзXMLТипа(ТипXML) = Тип("Число"));
Значение = Сериализатор.ПрочитатьXML(Чтение, Тип("Число"));
Чтение.Закрыть();
Исключение
Чтение.Закрыть();
ВызватьИсключение;
КонецПопытки;
Сообщить(Значение = 42);Разбор по шагам
Подготавливаем известное типизированное XML-представление и отдельный объект чтения.
Цикл пропускает декларацию и другие предшествующие узлы, останавливается на НачалоЭлемента.
ПолучитьXMLТип определяет текущий XML-тип. На начальном состоянии метод способен сам выполнить чтение, но здесь курсор уже позиционирован.
ВозможностьЧтенияXML проверяет существование платформенного сопоставления, не гарантирует корректность всех будущих байтов.
ПрочитатьXML проверяет само значение; тип и результат 42 контролируем отдельно.
Как проверить результат
Тип определяется, возможность чтения Истина и XML-тип сопоставляется с Число.
Прочитано число 42.
Если повредить текст числа, проверка типа может ещё пройти, но чтение значения должно отклонить содержимое.
Ожидаемый результат
Состояние XML-курсора, наличие сопоставления типа и валидность значения проверены тремя отдельными шагами.
На что обратить внимание
Проверка возможности чтения не является полной валидацией XML-документа по схеме.
После изменения позиции через Прочитать информацию о прежнем узле нельзя применять к новому.
Для отсутствующего типа или xsi:nil нельзя безусловно обращаться к ИмяТипа.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.