Как сформировать XML из объекта XDTO без указания пространства имен
Как сформировать XML из объекта XDTO без указания пространства имен
Объект XDTO формируется из 5 пакетов, каждый из которых содержит уровень вложенности показателей
При формировании из него XML следующим кодом
получаем такой тест
Как отключить при формировании XML отображение пространства имен, что бы в текста не было префиксов d3p1:, d5p1:, d6p1:
Объект XDTO формируется из 5 пакетов, каждый из которых содержит уровень вложенности показателей
При формировании из него XML следующим кодом
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.УстановитьСтроку("windows-1251");
ЗаписьXML.ЗаписатьОбъявлениеXML();
ФабрикаXDTO.ЗаписатьXML(ЗаписьXML, ОбъектВыгрузки, "Document", СлужебныйСерверПовтИсп.ИмяПакетаКорневогоЭлемента());
СтрокаXML = ЗаписьXML.Закрыть();
получаем такой тест
<?xml version="1.0" encoding="windows-1251"?>
<Document xmlns="http://aaaa.mos.ru/Main" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="" schemaVersion="2.1" inn="1122334455" ogrn="1234567890123" sourceID="ZZTOP" regNumberDoc="0" dateDoc="2024-07-26" subjectsCount="0" groupBlocksCount="0">
<Source>
<FL_46_UL_36_OrgSource xmlns:d3p1="http://aaaa.mos.ru/blocks">
<d3p1:fullName>Общество с ограниченной ответственностью "РЛ"</d3p1:fullName>
<d3p1:shortName>ООО "РЛ"</d3p1:shortName>
</FL_46_UL_36_OrgSource>
</Source>
<Data>
<Subject_UL>
<Title>
<UL_1_Name xmlns:d5p1="http://aaaa.mos.ru/blocks">
<d5p1:fullName>ооо лпп</d5p1:fullName>
<d5p1:shortName>ЛП</d5p1:shortName>
<d5p1:otherName>ООО ЛП</d5p1:otherName>
<d5p1:change_0 xsi:type="xs:boolean">true</d5p1:change_0>
<d5p1:prevFull>Общество с ограниченной ответственностью "ЛП"</d5p1:prevFull>
</UL_1_Name>
</Title>
<Events>
<UL_Event_1_4_1 xmlns:d5p1="http://aaaa.mos.ru/events">
<d5p1:UL_10_DealUid xmlns:d6p1="http://aaaa.mos.ru/blocks">
<d6p1:uid>2127b938-adbd-1afe-aacc-18ee25845d2c-9</d6p1:uid>
</d5p1:UL_10_DealUid>
<d5p1:UL_11_Deal xmlns:d6p1="http://aaaa.mos.ru/blocks">
<d6p1:role>4</d6p1:role>
<d6p1:code>2</d6p1:code>
<d6p1:cardExist_0 xsi:type="xs:boolean">false</d6p1:cardExist_0>
<d6p1:novationExist_0 xsi:type="xs:boolean">false</d6p1:novationExist_0>
<d6p1:monetarySourceExist_0 xsi:type="xs:boolean">false</d6p1:monetarySourceExist_0>
<d6p1:monetarySubjectExist_0 xsi:type="xs:boolean">true</d6p1:monetarySubjectExist_0>
<d6p1:endDate>2025-02-01</d6p1:endDate>
<d6p1:partialExist_0 xsi:type="xs:boolean">false</d6p1:partialExist_0>
<d6p1:floatRateExist_0 xsi:type="xs:boolean">false</d6p1:floatRateExist_0>
<d6p1:startDate>2024-07-25</d6p1:startDate>
</d5p1:UL_11_Deal>
<d5p1:UL_12_1_AmountInfo xmlns:d6p1="http://aaaa.mos.ru/blocks">
<d6p1:securitySum>7932000</d6p1:securitySum>
<d6p1:securityCurrency>RUB</d6p1:securityCurrency>
<d6p1:calcDate>2024-07-26</d6p1:calcDate>
</d5p1:UL_12_1_AmountInfo>
<d5p1:UL_17_18_19_20_Group xmlns:d6p1="http://aaaa.mos.ru/blocks">
<d6p1:UL_17_Debt>
<d6p1:exist_1 xsi:type="xs:decimal">1</d6p1:exist_1>
<d6p1:debtSum>2940000</d6p1:debtSum>
</d6p1:UL_17_Debt>
<d6p1:UL_18_DebtDue>
<d6p1:debtDueSum>2940000</d6p1:debtDueSum>
<d6p1:debtDueMainSum>2940000</d6p1:debtDueMainSum>
<d6p1:debtDueStartDate>2024-07-26</d6p1:debtDueStartDate>
</d6p1:UL_18_DebtDue>
</d5p1:UL_17_18_19_20_Group>
</UL_Event_1_4_1>
</Events>
</Subject_UL>
</Data>
</Document>
ПоказатьКак отключить при формировании XML отображение пространства имен, что бы в текста не было префиксов d3p1:, d5p1:, d6p1:
По теме из базы знаний
- Создание в 1С 7.7 XML в формате EnterpriseData (универсальный формат обмена), версия 1.5. Инструкции и примеры переноса данных из устаревшей конфигурации 1С 7.7 в любую современную 1С 8.3, поддерживающую EnterpriseData, через Конвертацию данных 3
- Обмен без правил. От простого к сложному
- Обзор полезных методов БСП 3.1.4
- Реализация обмена с ФГИС "Зерно"
- Самые используемые методы БСП 3.1.9
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Я вырезал атрибуты и теги из уже сформированного файла когда надо было с фнс взаимодействовать. Долго искал способ в XDTO это побороть, но проще обернуть формирование исходной xml-строки во врапер вырезания первого встречного xmlns. В БСП работе с html такой подход встречается.
Теоретически можно результирующий xml отдать в DOM и там уже вырезать все нужные атрибуты.
Ну или старой доброй парой чтения и записи xml пробежаться и атрибуты xmlns исключить.
Но это все вручную. И надо анализировать неймспейсы самостоятельно, насколько я понимаю у вас набор может быть плавающим.
Если хочется извращений для извращенных можно xdto пакет в xsd схему выгрузить, исправить файл схемы на предмет namespace и загрузить в фабрику снова, там уже будет ваш namespace по вашему формату, который дальше враппером грохнуть.
Теоретически можно результирующий xml отдать в DOM и там уже вырезать все нужные атрибуты.
Ну или старой доброй парой чтения и записи xml пробежаться и атрибуты xmlns исключить.
Но это все вручную. И надо анализировать неймспейсы самостоятельно, насколько я понимаю у вас набор может быть плавающим.
Если хочется извращений для извращенных можно xdto пакет в xsd схему выгрузить, исправить файл схемы на предмет namespace и загрузить в фабрику снова, там уже будет ваш namespace по вашему формату, который дальше враппером грохнуть.
попробуйте такой код
//получаем из Объекта или набора записей - строку !
//прОбъект = лкОбъект.ПолучитьОбъект();
лкОбъектXDTO = СериализаторXDTO.ЗаписатьXDTO(прОбъект);
лкЗаписьXML = Новый ЗаписьXML;
лкЗаписьXML.УстановитьСтроку();
ФабрикаXDTO.ЗаписатьXML(лкЗаписьXML,лкОбъектXDTO);
лкСтрокаИсх = лкЗаписьXML.Закрыть();
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот