Завершает запись атрибута XML. Начало атрибута записывается при вызове метода ЗаписьFastInfoset.ЗаписатьНачалоАтрибута. После записи начала атрибута все, что записывается - относится к данному атрибуту: текст, ссылки на сущности. Для завершения атрибута следует вызвать данный метод. Каждому вызову метода ЗаписьFastInfoset.ЗаписатьНачалоАтрибута должен соответствовать вызов данного метода.
Синтаксис
ЗаписатьКонецАтрибута()Полное описание, параметры и ограничения
ЗаписьFastInfoset.ЗаписатьКонецАтрибута (FastInfosetWriter.WriteEndAttribute)
ЗаписьFastInfoset (FastInfosetWriter)
ЗаписатьКонецАтрибута (WriteEndAttribute)
Доступен, начиная с версии 8.1.
Синтаксис:
ЗаписатьКонецАтрибута()
Описание:
Завершает запись атрибута XML. Начало атрибута записывается при вызове метода ЗаписьFastInfoset.ЗаписатьНачалоАтрибута. После записи начала атрибута все, что записывается - относится к данному атрибуту: текст, ссылки на сущности. Для завершения атрибута следует вызвать данный метод. Каждому вызову метода ЗаписьFastInfoset.ЗаписатьНачалоАтрибута должен соответствовать вызов данного метода.
Доступность:
Тонкий клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
Использование в версии:
Доступен, начиная с версии 8.1.
Методическая информация
Практические примеры
Записать значение атрибута частями и прочитать ПрочитатьАтрибут
Атрибут label содержит Книга A&B. Запись его начала и конца отделена от элементов; амперсанд передаётся текстом, а не конкатенацией XML-разметки.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Учебная база на платформе 8.5.1.1343. Создайте серверный общий модуль УчебныеЗадачи и процедуру ВыполнитьПример() Экспорт; код урока без директив вставляйте в её тело. Каждый урок запускайте отдельно.
Все документы создаются из собственных строк и чисел в памяти. Не подставляйте файл XML, бинарный архив обмена, ссылки или данные рабочей базы вместо учебных значений.
Fast Infoset — двоичное представление XML. Для чтения нужен соответствующий reader, а не преобразование байтов в UTF-8-строку. Это не формат API Avito и не автоматическое сжатие произвольного JSON.
Запуск в 1С ещё не подтверждён; выполните контрольные проверки в учебной базе. Не сравнивайте точные байты двух кодировщиков: в заданиях проверяется восстановленная структура и значения.
Запись = Новый ЗаписьFastInfoset;
Запись.УстановитьДвоичныеДанные();
Попытка
Запись.ЗаписатьНачалоЭлемента("product");
Запись.ЗаписатьНачалоАтрибута("label");
Запись.ЗаписатьТекст("Книга ");
Запись.ЗаписатьТекст("A&B");
Запись.ЗаписатьКонецАтрибута();
Запись.ЗаписатьТекст("Учебный товар");
Запись.ЗаписатьКонецЭлемента();
Данные = Запись.Закрыть();
Исключение
Запись.Закрыть();
ВызватьИсключение;
КонецПопытки;
Если ТипЗнч(Данные) <> Тип("ДвоичныеДанные") Тогда
ВызватьИсключение "Не получены собственные Fast Infoset-данные";
КонецЕсли;
Сообщить(Данные.Размер() > 0);
Чтение = Новый ЧтениеFastInfoset;
Чтение.УстановитьДвоичныеДанные(Данные);
Попытка
НайденКорень = Ложь;
Пока Чтение.Прочитать() Цикл
Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
НайденКорень = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
Если Не НайденКорень Тогда
ВызватьИсключение "Не найден собственный корневой элемент";
КонецЕсли;
Подпись = "";
Атрибутов = 0;
Пока Чтение.ПрочитатьАтрибут() Цикл
Атрибутов = Атрибутов + 1;
Если Чтение.ЛокальноеИмя = "label" Тогда
Подпись = Чтение.Значение;
КонецЕсли;
КонецЦикла;
Сообщить(Атрибутов = 1);
Сообщить(Подпись = "Книга A&B");
Исключение
Чтение.Закрыть();
ВызватьИсключение;
КонецПопытки;
Чтение.Закрыть();
Разбор по шагам
ЗаписатьНачалоАтрибута вызывается на незавершённом начале элемента до текстового содержимого.
Два вызова ЗаписатьТекст внутри атрибута образуют одну строку label.
ЗаписатьКонецАтрибута завершает атрибут; следующий текст уже относится к элементу.
ПрочитатьАтрибут возвращает очередной атрибут и меняет текущие свойства reader.
Как проверить результат
Три проверки Истина: непустые байты, один атрибут и восстановленная подпись Книга A&B.
Строка ampersand не превратилась в потерянный разделитель и не требует ручного чтения &.
Ожидаемый результат
Реальный текст восстановлен после поэтапной записи атрибута.
На что обратить внимание
Каждому началу атрибута обязателен конец; нельзя начать дочерний элемент, пока атрибут открыт.
Не заменяйте безопасную запись текста сборкой внешней XML-разметки.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.