Как получить XSD программный путем из ЗаписьXML
Здравствуйте,
Выгружаю файл XML с помощью обработки, код:
Теперь нужно выгрузить в отдельный файл XSD схему.
Как его можно сделать ?
Выгружаю файл XML с помощью обработки, код:
ХМЛ_данные=Новый ЗаписьXML;
ХМЛ_данные.ОткрытьФайл("C:\TEMP\Test.xml");
ХМЛ_данные.ЗаписатьНачалоЭлемента("Root");
ВыборкаСпр=Справочники.Организации.Выбрать();
Пока ВыборкаСпр.Следующий() Цикл
Если ВыборкаСпр.ЭтоГруппа Тогда Продолжить; КонецЕсли;
ТекОбъект = ВыборкаСпр.ПолучитьОбъект();
ФабТек = СериализаторXDTO.ЗаписатьXDTO(ТекОбъект);
ФабрикаXDTO.ЗаписатьXML(ХМЛ_данные, ФабТек,,,,НазначениеТипаXML.Явное);
КонецЦикла;
ХМЛ_данные.ЗаписатьКонецЭлемента(); // Root
ХМЛ_данные.Закрыть();
ПоказатьТеперь нужно выгрузить в отдельный файл XSD схему.
Как его можно сделать ?
По теме из базы знаний
Найденные решения
Примерно вот так получилось:
Но думаю было бы оптимально, если программно создать пакет XDTO и его выгрузить.
Пока не знаю как это сделать
Для Каждого Пакет из ФабрикаXDTO.Пакеты Цикл
Если Пакет.URIПространстваИмен <> "http://v8.1c.ru/8.1/data/enterprise/current-config" Тогда
Продолжить;
КонецЕсли;
НаборСхем = ФабрикаXDTO.ЭкспортСхемыXML(Пакет.URIПространстваИмен);
Для Счетчик = 0 по НаборСхем.Количество() - 1 Цикл
Схема = НаборСхем.Получить(Счетчик);
Схема.ОбновитьЭлементDOM();
ЗаписьDOM = Новый ЗаписьDOM;
ЗаписьXMLСтрока = Новый ЗаписьXML;
ЗаписьXMLСтрока.УстановитьСтроку();
ЗаписьXMLФайл = Новый ЗаписьXML;
СписокЭл=Схема.ДокументDOM.ПолучитьЭлементыПоИмени("xs:complexType");
Для каждого элементXML из СписокЭл Цикл
Если элементXML.ПолучитьАтрибут("name")="CatalogObject.Организации" Тогда
ЗаписьDOM.Записать(элементXML, ЗаписьXMLСтрока);
КонецЕсли;
КонецЦикла;
ЗаписьXMLФайл.ОткрытьФайл("C:\TEMP\Config2_" + ".xsd");
ЗаписьXMLФайл.ЗаписатьБезОбработки(ЗаписьXMLСтрока.Закрыть());
ЗаписьXMLФайл.Закрыть()
КонецЦикла;
КонецЦикла;
ПоказатьНо думаю было бы оптимально, если программно создать пакет XDTO и его выгрузить.
Пока не знаю как это сделать
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Примерно вот так получилось:
Но думаю было бы оптимально, если программно создать пакет XDTO и его выгрузить.
Пока не знаю как это сделать
Для Каждого Пакет из ФабрикаXDTO.Пакеты Цикл
Если Пакет.URIПространстваИмен <> "http://v8.1c.ru/8.1/data/enterprise/current-config" Тогда
Продолжить;
КонецЕсли;
НаборСхем = ФабрикаXDTO.ЭкспортСхемыXML(Пакет.URIПространстваИмен);
Для Счетчик = 0 по НаборСхем.Количество() - 1 Цикл
Схема = НаборСхем.Получить(Счетчик);
Схема.ОбновитьЭлементDOM();
ЗаписьDOM = Новый ЗаписьDOM;
ЗаписьXMLСтрока = Новый ЗаписьXML;
ЗаписьXMLСтрока.УстановитьСтроку();
ЗаписьXMLФайл = Новый ЗаписьXML;
СписокЭл=Схема.ДокументDOM.ПолучитьЭлементыПоИмени("xs:complexType");
Для каждого элементXML из СписокЭл Цикл
Если элементXML.ПолучитьАтрибут("name")="CatalogObject.Организации" Тогда
ЗаписьDOM.Записать(элементXML, ЗаписьXMLСтрока);
КонецЕсли;
КонецЦикла;
ЗаписьXMLФайл.ОткрытьФайл("C:\TEMP\Config2_" + ".xsd");
ЗаписьXMLФайл.ЗаписатьБезОбработки(ЗаписьXMLСтрока.Закрыть());
ЗаписьXMLФайл.Закрыть()
КонецЦикла;
КонецЦикла;
ПоказатьНо думаю было бы оптимально, если программно создать пакет XDTO и его выгрузить.
Пока не знаю как это сделать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот