Записывает начало элемента.
Синтаксис
ЗаписатьНачалоЭлемента(<ПолноеИмя>)ЗаписатьНачалоЭлемента(<ЛокальноеИмя>, <URIПространстваИмен>)Примеры платформы
Запись.ЗаписатьНачалоЭлемента("weight", "http://metrics.org");
Запись.ЗаписатьСоответствиеПространстваИмен("nsp", "http://metrics.org");
Запись.ЗаписатьТекст("12.5");
Запись.ЗаписатьКонецЭлемента();Полное описание, параметры и ограничения
ЗаписьXML.ЗаписатьНачалоЭлемента (XMLWriter.WriteStartElement)
ЗаписьXML (XMLWriter)
ЗаписатьНачалоЭлемента (WriteStartElement)
Доступен, начиная с версии 8.1.
Вариант синтаксиса: Запись начала элемента с полным именем элемента
Синтаксис:
ЗаписатьНачалоЭлемента(<ПолноеИмя>)
Параметры:
<ПолноеИмя> (обязательный)
Тип: Строка.
Полное имя записываемого элемента. Может включать префикс. Например: "nsp:weight".
Вариант синтаксиса: Запись начала элемента с локальным именем и URI пространства имен
Синтаксис:
ЗаписатьНачалоЭлемента(<ЛокальноеИмя>, <URIПространстваИмен>)
Параметры:
<ЛокальноеИмя> (обязательный)
Тип: Строка.
Локальное имя элемента (без префикса).
<URIПространстваИмен> (обязательный)
Тип: Строка.
URI пространства имен для имени элемента.
Описание варианта метода:
Соответствие пространства имен должно быть записано при записи вышестоящего элемента или при записи данного элемента.
Описание:
Записывает начало элемента.
Доступность:
Тонкий клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
Пример:
Запись.ЗаписатьНачалоЭлемента("weight", "http://metrics.org");
Запись.ЗаписатьСоответствиеПространстваИмен("nsp", "http://metrics.org");
Запись.ЗаписатьТекст("12.5");
Запись.ЗаписатьКонецЭлемента();
Использование в версии:
Доступен, начиная с версии 8.1.
Методическая информация
Практические примеры
Создать XML товара без ручного экранирования
Название содержит амперсанд и знак меньше. ЗаписьXML правильно экранирует их, а ЧтениеXML восстанавливает исходный текст.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Выполняйте в серверной процедуре учебной обработки; файлы не создаются.
Оставьте специальные символы в названии: именно на них проверяется безопасная запись.
Запись = Новый ЗаписьXML;
Запись.УстановитьСтроку();
Попытка
Запись.ЗаписатьОбъявлениеXML();
Запись.ЗаписатьНачалоЭлемента("product");
Запись.ЗаписатьАтрибут("code", "A-01");
Запись.ЗаписатьНачалоАтрибута("quantity");
Запись.ЗаписатьТекст("3");
Запись.ЗаписатьКонецАтрибута();
Запись.ЗаписатьНачалоЭлемента("name");
Запись.ЗаписатьТекст("Книга & учебник <для новичка>");
Запись.ЗаписатьКонецЭлемента();
Запись.ЗаписатьКомментарий("Учебные данные");
Запись.ЗаписатьКонецЭлемента();
ТекстXML = Запись.Закрыть();
Исключение
Запись.Закрыть();
ВызватьИсключение;
КонецПопытки;
Сообщить(ТекстXML);
Чтение = Новый ЧтениеXML;
Чтение.УстановитьСтроку(ТекстXML);
Попытка
Пока Чтение.Прочитать() Цикл
Если Чтение.ТипУзла = ТипУзлаXML.Текст Тогда
Сообщить(Чтение.Значение);
КонецЕсли;
КонецЦикла;
Исключение
Чтение.Закрыть();
ВызватьИсключение;
КонецПопытки;
Чтение.Закрыть();Разбор по шагам
УстановитьСтроку включает запись в память, ЗаписатьОбъявлениеXML добавляет объявление XML.
Все атрибуты записываем до содержимого элемента; поэтапная запись quantity заканчивается КонецАтрибута.
Для каждого НачалоЭлемента вызываем КонецЭлемента; Закрыть возвращает готовую строку.
Читаем строку обратно и выводим значение текстового узла.
Как проверить результат
В готовом XML амперсанд и знак меньше записаны как & и <.
Читатель выводит ровно Книга & учебник <для новичка>, без строк & или <.
Ожидаемый результат
XML содержит product с кодом A-01, количеством 3 и исходным названием.
На что обратить внимание
Не применяйте СтрЗаменить для экранирования перед ЗаписатьТекст: получится двойное экранирование.
ЗаписатьБезОбработки предназначен для уже корректной XML-разметки, а не для внешнего названия товара.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Записать CDATA без превращения текста в XML-теги
Внутри CDATA остаётся буквальный текст Книга <учебник> & пособие. Инструкция guide — отдельный узел, не исполняемая команда 1С.
Где и как запускать
Полный серверный общий модуль собственной учебной базы; не тонкий клиент.
Подготовка
В своей учебной базе 8.5.1.1343 создайте серверный общий модуль УчебнаяЗаписьXML. Вставьте полный модуль одного урока и вызовите УчебнаяЗаписьXML.ВыполнитьПример() из собственной серверной команды.
Все тексты и товары заданы константами: Книга, A&B, количество 3. Учётные данные, файлы организации, HTTP и внешние XML не используются.
Первые шесть уроков работают только со строками/потоком в памяти. Последний создаёт один новый временный XML в собственной учебной базе; имя выводится, файл оставляется для ручной проверки.
Для урока файла имя конфигурации должно быть УчебнаяКонфигурацияСинтаксиса. Существующий файл не перезаписывается. После проверки удалите вручную только показанный собственный временный файл.
ПараметрыЗаписиXML неизменяемы после создания. Все пять параметров задаются конструктором, а не присваиванием свойств.
Процедура ВыполнитьПример() Экспорт
Запись = Новый ЗаписьXML;
Запись.УстановитьСтроку();
Попытка
Запись.ЗаписатьОбъявлениеXML();
Запись.ЗаписатьИнструкциюОбработки("guide", "mode='training'");
Запись.ЗаписатьНачалоЭлемента("catalog");
Запись.ЗаписатьНачалоЭлемента("product");
Запись.ЗаписатьАтрибут("code", "A&B");
Запись.ЗаписатьАтрибут("quantity", "3");
Запись.ЗаписатьСекциюCDATA("Книга <учебник> & пособие");
Запись.ЗаписатьКонецЭлемента();
Запись.ЗаписатьКонецЭлемента();
XML = Запись.Закрыть();
Исключение
Запись.Закрыть();
ВызватьИсключение;
КонецПопытки;
Сообщить(СтрНайти(XML, "<![CDATA[") > 0);
Сообщить(СтрНайти(XML, "<?guide") > 0);
Товар = ПрочитатьУчебныйТовар(XML);
Сообщить(Товар.Код = "A&B");
Сообщить(Товар.Текст = "Книга <учебник> & пособие");
КонецПроцедуры
Функция ПрочитатьУчебныйТовар(XML)
Чтение = Новый ЧтениеXML;
Результат = Новый Структура("Корень,Код,Количество,Текст", "", "", "", "");
ВТоваре = Ложь;
Попытка
Чтение.УстановитьСтроку(XML);
Пока Чтение.Прочитать() Цикл
Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
Если ПустаяСтрока(Результат.Корень) Тогда
Результат.Корень = Чтение.ЛокальноеИмя;
КонецЕсли;
Если Чтение.ЛокальноеИмя = "product" Тогда
ВТоваре = Истина;
Результат.Код = Чтение.ПолучитьАтрибут("code");
Результат.Количество = Чтение.ПолучитьАтрибут("quantity");
КонецЕсли;
ИначеЕсли ВТоваре И (Чтение.ТипУзла = ТипУзлаXML.Текст
ИЛИ Чтение.ТипУзла = ТипУзлаXML.СекцияCDATA) Тогда
Результат.Текст = Результат.Текст + Чтение.Значение;
ИначеЕсли Чтение.ТипУзла = ТипУзлаXML.КонецЭлемента
И Чтение.ЛокальноеИмя = "product" Тогда
ВТоваре = Ложь;
КонецЕсли;
КонецЦикла;
Исключение
Чтение.Закрыть();
ВызватьИсключение;
КонецПопытки;
Чтение.Закрыть();
Возврат Результат;
КонецФункцииРазбор по шагам
Записать объявление, затем собственную инструкцию обработки guide. Не передавать туда программу для исполнения.
Открыть товар и записать атрибуты обычным способом. Амперсанд атрибута всё равно экранируется.
Текст записать через ЗаписатьСекциюCDATA и закрыть оба элемента.
Снова прочитать XML: читатель собирает Текст и СекцияCDATA и возвращает исходную строку.
Как проверить результат
Четыре проверки дают Истина.
В результате есть CDATA и инструкция guide, а <учебник> не стал вложенным элементом.
Ожидаемый результат
Полный пример двух специальных XML-узлов и восстановления текста.
На что обратить внимание
Произвольный текст с ]]> нельзя без обработки поместить в одну CDATA.
CDATA не очищает HTML и не делает внешний текст безопасным для браузера.
Инструкция обработки воспринимается по правилам получателя; здесь она собственная и не запускает внешний процесс.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.