Удаление пространств имен из XML файла, созданного на основе XDTO объекта
25.07.24
Разработка - Универсальные функции
Иногда при экспорте XML может потребоваться удалить атрибуты корневого узла, такие как:
xmlns="xyz" xmlns:xs="xyz" xmlns:xsi="xyz".
Предлагаю универсальное решение, которое в исключительном случае с точки зрения производительности можно применить и построчно, если выгрузка была произведена с явным указанием типа XML.
Функция XMLСтрокаБезПространствИмен(XMLСтрока)
Текст = Новый ТекстовыйДокумент;
Текст.УстановитьТекст(XMLСтрока);
СтрокаСАтрибутами = Текст.ПолучитьСтроку(2);
МассивПодстрок = СтрРазделить(СтрокаСАтрибутами, " ");
УдалитьВсеВхожденияСтрокиИзМассива(МассивПодстрок, АтрибутПространстваИмен());
СтрокаСАтрибутами = СтрСоединить(МассивПодстрок, " ");
Текст.ЗаменитьСтроку(2, СтрокаСАтрибутами);
Возврат Текст.ПолучитьТекст();
КонецФункции
Функция АтрибутПространстваИмен()
Возврат "xmlns";
КонецФункции
Процедура УдалитьВсеВхожденияСтрокиИзМассива(Массив, Значение)
КоличествоЭлементовКоллекции = Массив.Количество();
Для ОбратныйИндекс = 1 По КоличествоЭлементовКоллекции Цикл
Индекс = КоличествоЭлементовКоллекции - ОбратныйИндекс;
Если СтрНайти(Массив[Индекс], Значение) > 0 Тогда
Массив.Удалить(Индекс);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Вступайте в нашу телеграмм-группу Инфостарт
Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.