Открывает поток для записи документов и фрагментов XML. Позволяет указать тип кодировки, который будет использован для записи.
Синтаксис
ОткрытьПоток(<Поток>, <ТипКодировки>, <ДобавлятьBOM>)ОткрытьПоток(<Поток>, <ПараметрыЗаписи>, <ДобавлятьBOM>)Полное описание, параметры и ограничения
ЗаписьXML.ОткрытьПоток (XMLWriter.OpenStream)
ЗаписьXML (XMLWriter)
ОткрытьПоток (OpenStream)
Доступен, начиная с версии 8.3.10.
Вариант синтаксиса: По потоку и типу кодировки
Синтаксис:
ОткрытьПоток(<Поток>, <ТипКодировки>, <ДобавлятьBOM>)
Параметры:
<Поток> (обязательный)
Тип: Поток, ПотокВПамяти, ФайловыйПоток.
Поток, в который будет записан текст XML.
<ТипКодировки> (необязательный)
Тип: Строка.
В качестве типа кодировки может быть указана одна из возможных кодировок текста. В этом случае поток будет записан в соответствующей кодировке. При этом в объявлении XML-документа (если таковое будет записано) будет присутствовать атрибут 'encoding', имеющий соответствующее значение. Если же в качестве параметра указана пустая строка или ничего не указано, то для записи потока будет использована кодировка UTF8, а атрибут 'encoding' не будет присутствовать в объявлении XML-документа.
Поддерживаемые коды кодировок:
UTF-8
UTF-16
UTF-16BE
UTF-16LE
ISO-8859-1
US-ASCII
gb18030
iso-8859-2
iso-8859-3
iso-8859-4
iso-8859-5
iso-8859-6
iso-8859-7
iso-8859-8
iso-8859-9
iso-8859-13
iso-8859-15
Shift_JIS
EUC-JP
Big5
Big5-HKSCS
GBK
GB2312
GB_2312-80
EUC-KR
KSC_5601
windows-949
windows-874
cp866
KOI8-R
KOI8-U
windows-1250
windows-1251
windows-1252
windows-1253
windows-1254
windows-1255
windows-1256
windows-1257
windows-1258
macintosh
x-mac-cyrillic
ISO-2022-JP
ISO-2022-KR
ISO-2022-CN
ISO-2022-CN-EXT
HZ-GB-2312
.
<ДобавлятьBOM> (необязательный)
Тип: Булево.
Определяет, будет ли добавлена метка порядка байт (BOM) к результирующему потоку XML.
Значение по умолчанию: Истина.
Описание варианта метода:
Позволяет указать тип кодировки, который будет использован для записи потока XML.
Вариант синтаксиса: С параметрами записи
Синтаксис:
ОткрытьПоток(<Поток>, <ПараметрыЗаписи>, <ДобавлятьBOM>)
Параметры:
<Поток> (обязательный)
Тип: Поток, ПотокВПамяти, ФайловыйПоток.
Поток, в который будет записан текст XML.
<ПараметрыЗаписи> (необязательный)
Тип: ПараметрыЗаписиXML.
Параметры записи XML.
<ДобавлятьBOM> (необязательный)
Тип: Булево.
Определяет, будет ли добавлена метка порядка байт (BOM) к результирующему потоку XML.
Значение по умолчанию: Истина.
Описание варианта метода:
Позволяет указать параметры записи XML.
Описание:
Открывает поток для записи документов и фрагментов XML. Позволяет указать тип кодировки, который будет использован для записи.
Доступность:
Тонкий клиент, сервер, толстый клиент, внешнее соединение.
Использование в версии:
Доступен, начиная с версии 8.3.10.
Методическая информация
Практические примеры
Создать настоящие UTF-8 байты XML в памяти
ОткрытьПоток получает параметры и явный Ложь для BOM. Затем тот же собственный поток используется для обратного чтения.
Где и как запускать
Полный серверный общий модуль собственной учебной базы; не тонкий клиент.
Подготовка
В своей учебной базе 8.5.1.1343 создайте серверный общий модуль УчебнаяЗаписьXML. Вставьте полный модуль одного урока и вызовите УчебнаяЗаписьXML.ВыполнитьПример() из собственной серверной команды.
Все тексты и товары заданы константами: Книга, A&B, количество 3. Учётные данные, файлы организации, HTTP и внешние XML не используются.
Первые шесть уроков работают только со строками/потоком в памяти. Последний создаёт один новый временный XML в собственной учебной базе; имя выводится, файл оставляется для ручной проверки.
Для урока файла имя конфигурации должно быть УчебнаяКонфигурацияСинтаксиса. Существующий файл не перезаписывается. После проверки удалите вручную только показанный собственный временный файл.
ПараметрыЗаписиXML неизменяемы после создания. Все пять параметров задаются конструктором, а не присваиванием свойств.
Процедура ВыполнитьПример() Экспорт
Параметры = Новый ПараметрыЗаписиXML("UTF-8", "1.0", Ложь, Ложь, " ");
Поток = Новый ПотокВПамяти;
Запись = Новый ЗаписьXML;
Попытка
Запись.ОткрытьПоток(Поток, Параметры, Ложь);
Запись.ЗаписатьОбъявлениеXML();
Запись.ЗаписатьНачалоЭлемента("catalog");
Запись.ЗаписатьНачалоЭлемента("product");
Запись.ЗаписатьАтрибут("code", "A&B");
Запись.ЗаписатьАтрибут("quantity", "3");
Запись.ЗаписатьТекст("Книга <учебник> & пособие");
Запись.ЗаписатьКонецЭлемента();
Запись.ЗаписатьКонецЭлемента();
Запись.Закрыть();
Сообщить(Поток.Размер() > 0);
Поток.Перейти(0, ПозицияВПотоке.Начало);
Чтение = Новый ЧтениеXML;
Попытка
Чтение.ОткрытьПоток(Поток);
Пока Чтение.Прочитать() Цикл
Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента
И Чтение.ЛокальноеИмя = "product" Тогда
Сообщить(Чтение.ПолучитьАтрибут("code") = "A&B");
Сообщить(Чтение.ПолучитьАтрибут("quantity") = "3");
КонецЕсли;
КонецЦикла;
Исключение
Чтение.Закрыть();
ВызватьИсключение;
КонецПопытки;
Чтение.Закрыть();
Исключение
ОшибкаОперации = ОписаниеОшибки();
Запись.Закрыть();
Поток.Закрыть();
ВызватьИсключение ОшибкаОперации;
КонецПопытки;
Поток.Закрыть();
КонецПроцедуры
Разбор по шагам
Создать собственный поток и параметры UTF-8. Передать Ложь третьим аргументом: BOM не добавляется.
Записать объявление и товар штатными методами. Закрыть писатель до перехода к чтению.
Проверить ненулевой размер потока и переместить его позицию в начало.
Открыть ЧтениеXML на потоке, пройти весь XML, проверить атрибуты и закрыть читатель и поток, включая ветку ошибки.
Как проверить результат
Три проверки дают Истина.
Поток содержит байты XML, но на диске ничего не создано. В отладчике проверьте начало данных без UTF-8 BOM EF BB BF.
Ожидаемый результат
Самостоятельный рецепт байтового XML для дальнейшей передачи без файловой зависимости.
На что обратить внимание
Кодировка строки и байты потока — разные вещи. В этом уроке UTF-8 применяется к реальной записи байтов.
Перед обратным чтением нужен переход в начало. Запись завершена до чтения того же потока.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.