Записывает XML фрагмент текста без обработки в результирующий текст. Например, можно приготовить фрагмент XML-документа и потом вставить его в целевой документ с помощью данного метода.
Синтаксис
ЗаписатьБезОбработки(<Текст>)Примеры платформы
Запись.ЗаписатьБезОбработки("<fruit>apple</fruit>");Полное описание, параметры и ограничения
ЗаписьXML.ЗаписатьБезОбработки (XMLWriter.WriteRaw)
ЗаписьXML (XMLWriter)
ЗаписатьБезОбработки (WriteRaw)
Доступен, начиная с версии 8.1.
Синтаксис:
ЗаписатьБезОбработки(<Текст>)
Параметры:
<Текст> (обязательный)
Тип: Строка.
Текст, помещаемый без обработки в формируемый документ или фрагмент XML.
Описание:
Записывает XML фрагмент текста без обработки в результирующий текст. Например, можно приготовить фрагмент XML-документа и потом вставить его в целевой документ с помощью данного метода.
Доступность:
Тонкий клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
Примечание:
В случае, когда используется запись в Fast Infoset-файл, метод используется как аналог метода ЗаписьXML.ЗаписатьТекст. Разбор и анализ записываемых текстовых данных не производится.
Следует быть очень осторожным с применением данного метода, так как размещаемый фрагмент не проверяется, что может сделать XML-документ синтаксически некорректным.
Пример:
Запись.ЗаписатьБезОбработки("<fruit>apple</fruit>");
Использование в версии:
Доступен, начиная с версии 8.1.
Методическая информация
Практические примеры
Вставить свой готовый фрагмент в общий XML
Вставляем не внешний текст, а фрагмент, который только что корректно создал второй ЗаписьXML на собственных данных.
Где и как запускать
Полный серверный общий модуль собственной учебной базы; не тонкий клиент.
Подготовка
В своей учебной базе 8.5.1.1343 создайте серверный общий модуль УчебнаяЗаписьXML. Вставьте полный модуль одного урока и вызовите УчебнаяЗаписьXML.ВыполнитьПример() из собственной серверной команды.
Все тексты и товары заданы константами: Книга, A&B, количество 3. Учётные данные, файлы организации, HTTP и внешние XML не используются.
Первые шесть уроков работают только со строками/потоком в памяти. Последний создаёт один новый временный XML в собственной учебной базе; имя выводится, файл оставляется для ручной проверки.
Для урока файла имя конфигурации должно быть УчебнаяКонфигурацияСинтаксиса. Существующий файл не перезаписывается. После проверки удалите вручную только показанный собственный временный файл.
ПараметрыЗаписиXML неизменяемы после создания. Все пять параметров задаются конструктором, а не присваиванием свойств.
Процедура ВыполнитьПример() Экспорт
Фрагмент = Новый ЗаписьXML;
Фрагмент.УстановитьСтроку();
Попытка
Фрагмент.ЗаписатьНачалоЭлемента("product");
Фрагмент.ЗаписатьАтрибут("code", "A&B");
Фрагмент.ЗаписатьАтрибут("quantity", "3");
Фрагмент.ЗаписатьТекст("Книга <учебник> & пособие");
Фрагмент.ЗаписатьКонецЭлемента();
СобственныйФрагмент = Фрагмент.Закрыть();
Исключение
Фрагмент.Закрыть();
ВызватьИсключение;
КонецПопытки;
Запись = Новый ЗаписьXML;
Запись.УстановитьСтроку();
Попытка
Запись.ЗаписатьНачалоЭлемента("catalog");
Запись.ЗаписатьБезОбработки(СобственныйФрагмент);
Запись.ЗаписатьКонецЭлемента();
XML = Запись.Закрыть();
Исключение
Запись.Закрыть();
ВызватьИсключение;
КонецПопытки;
Товар = ПрочитатьУчебныйТовар(XML);
Сообщить(Товар.Корень = "catalog");
Сообщить(Товар.Код = "A&B");
Сообщить(Товар.Количество = "3");
Сообщить(Товар.Текст = "Книга <учебник> & пособие");
КонецПроцедуры
Функция ПрочитатьУчебныйТовар(XML)
Чтение = Новый ЧтениеXML;
Результат = Новый Структура("Корень,Код,Количество,Текст", "", "", "", "");
ВТоваре = Ложь;
Попытка
Чтение.УстановитьСтроку(XML);
Пока Чтение.Прочитать() Цикл
Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
Если ПустаяСтрока(Результат.Корень) Тогда
Результат.Корень = Чтение.ЛокальноеИмя;
КонецЕсли;
Если Чтение.ЛокальноеИмя = "product" Тогда
ВТоваре = Истина;
Результат.Код = Чтение.ПолучитьАтрибут("code");
Результат.Количество = Чтение.ПолучитьАтрибут("quantity");
КонецЕсли;
ИначеЕсли ВТоваре И (Чтение.ТипУзла = ТипУзлаXML.Текст
ИЛИ Чтение.ТипУзла = ТипУзлаXML.СекцияCDATA) Тогда
Результат.Текст = Результат.Текст + Чтение.Значение;
ИначеЕсли Чтение.ТипУзла = ТипУзлаXML.КонецЭлемента
И Чтение.ЛокальноеИмя = "product" Тогда
ВТоваре = Ложь;
КонецЕсли;
КонецЦикла;
Исключение
Чтение.Закрыть();
ВызватьИсключение;
КонецПопытки;
Чтение.Закрыть();
Возврат Результат;
КонецФункцииРазбор по шагам
Первым писателем создать один product без объявления XML. Атрибут и текст передать штатным экранирующим методам.
Закрыть первый писатель и получить готовый СобственныйФрагмент.
Вторым писателем открыть catalog и вставить фрагмент через ЗаписатьБезОбработки.
Завершить общий документ, полностью прочитать и сравнить четыре поля. Это проверяет структуру после вставки.
Как проверить результат
Четыре проверки дают Истина.
В catalog ровно один учебный product с кодом A&B, количеством 3 и исходным текстом.
Ожидаемый результат
Практический рецепт сборки собственного XML из уже корректных фрагментов.
На что обратить внимание
ЗаписатьБезОбработки не экранирует, не проверяет и не обезвреживает чужой ввод.
Фрагмент не должен содержать второе объявление XML или DOCTYPE.
При внешних данных разбирайте и проверяйте разрешённые узлы либо используйте ЗаписатьТекст.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.