Найти запрещённый управляющий символ перед формированием XML

Учебные задачи

Показываем точную позицию управляющего символа в известном учебном тексте, чтобы не маскировать повреждение исходных данных.

Где и как запускать

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. Все исходные строки заданы прямо в примере; товары, файлы и настройки рабочих конфигураций не нужны.

  2. Выполняйте на сервере учебной базы. Особенно важно для встроенных функций регулярных выражений.


Текст = "Книга" + Символ(1) + ": 3";
Позиция = НайтиНедопустимыеСимволыXML(Текст);
Если Позиция > 0 Тогда
    Сообщить(СтрШаблон("XML отклонён: недопустимый символ на позиции %1, код %2", Позиция, КодСимвола(Текст, Позиция)));
Иначе
    Сообщить("По этой проверке запрещённых символов XML нет");
КонецЕсли;
Исправленный = "Книга: 3";
Сообщить(НайтиНедопустимыеСимволыXML(Исправленный) = 0);

Разбор по шагам

  1. Символ(1) создаёт известный управляющий символ внутри текста; это не обычная буква или пробел.

  2. НайтиНедопустимыеСимволыXML возвращает позицию первого недопустимого символа либо 0.

  3. КодСимвола помогает диагностировать невидимый символ, не печатая его в сообщении.

  4. Исправленный учебный текст задаём отдельно; автоматически не удаляем данные внешнего источника.

Как проверить результат

  1. У исходного текста позиция 6 и код символа 1.

  2. Проверка исправленного текста даёт Истина.

  3. Обычные < и & сами по себе не делают эту проверку полной: их экранирует ЗаписьXML при записи текста элемента.

Ожидаемый результат

Место повреждения текста найдено до попытки сериализовать его в XML.

На что обратить внимание

  1. Удаление управляющих символов может изменить идентификатор или содержимое документа — исправление должно соответствовать контракту.

  2. Эта функция не проверяет XML-схему, корректность тегов или обязательные поля документа.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.