XDTO, запись XML с указанием типа данных

1. robot2344332 14.06.24 10:29 Сейчас в теме
Добрый день, как можно указать тип данных в теге при записи XDTO объектов в XML ?

пример:

<file_name xsi:type="xsd:string">тест101.txt</file_name>
<description xsi:type="xsd:string">тест1</description>
<file_content xsi:type="xsd:base64Binary">MTEyMjMzYWJjZGVm</file_content>
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Serg2000mr 429 21.06.24 14:45 Сейчас в теме
(1) Добрый день

что-то вроде:

ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.ОткрытьФайл(ИмяФайла, "UTF-8");
					
ЗаписьXML.ЗаписатьОбъявлениеXML();
ЗаписьXML.ЗаписатьНачалоЭлемента("МоиДанные", "http://www.1c.ru/V8/1CV8DtUD/");
ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("xsi", "http://www.w3.org/2001/XMLSchema-instance");
ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("core", "http://v8.1c.ru/data");
ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("v8", "http://v8.1c.ru/8.1/data/enterprise/current-config");
ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("xs", "http://www.w3.org/2001/XMLSchema");
		
ВыгрузкаДанныхXDTO(ЗаписьXML);
		
ЗаписьXML.ЗаписатьКонецЭлемента();

ЗаписьXML.Закрыть();
Показать
3. robot2344332 21.06.24 15:12 Сейчас в теме
(2)
(2)
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.ОткрытьФайл(ИмяФайла, "UTF-8");

ЗаписьXML.ЗаписатьОбъявлениеXML();
ЗаписьXML.ЗаписатьНачалоЭлемента("МоиДанные", "http://www.1c.ru/V8/1CV8DtUD/");
ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("xsi", "http://www.w3.org/2001/XMLSchema-instance");
ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("core", "http://v8.1c.ru/data");
ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("v8", "http://v8.1c.ru/8.1/data/enterprise/current-config");
ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("xs", "http://www.w3.org/2001/XMLSchema");

ВыгрузкаДанныхXDTO(ЗаписьXML);

ЗаписьXML.ЗаписатьКонецЭлемента();
Показать

(2)

Это всё встаёт в заголовок, а для элемента тип данных не указывается. Мне нужно было, чтобы тип данных указывался у каждого элемента при сохранении объектов xdto. Если сохранять в xml таблицу значений, то там всё указывается
4. Serg2000mr 429 22.06.24 03:35 Сейчас в теме
(3) Попробуйте указать параметр НазначениеТипаXML.Явное в ЗаписатьXML()
5. robot2344332 22.06.24 22:03 Сейчас в теме
(4)
то же самое, изменяется только заголовок
6. Serg2000mr 429 22.06.24 23:24 Сейчас в теме
(5) ну, может тогда поэлементная запись. Что-то вроде
Запись.ЗаписатьНачалоЭлемента("weight", "http://metrics.org");
Запись.ЗаписатьСоответствиеПространстваИмен("nsp", "http://metrics.org");
Запись.ЗаписатьТекст("12.5");
Запись.ЗаписатьКонецЭлемента();
7. robot2344332 23.06.24 06:38 Сейчас в теме
(6) можно так, а можно в таблицу значений перегнать, но похоже, что xdto не записываются с типами данных
8. user1880116 23.06.24 10:28 Сейчас в теме
(7)
похоже, что xdto не записываются с типами данных
Надо просто понимать что ты делаешь.
ТекстСхемы = 
	"<xs:schema xmlns:tns=""http://www.sample-package.org"" 
	|           xmlns:xs=""http://www.w3.org/2001/XMLSchema"" 
	|           targetNamespace=""http://www.sample-package.org""
	|           attributeFormDefault=""unqualified"" elementFormDefault=""qualified"">
	|
	|	<xs:complexType name=""ТипОбъекта1"">
	|		<xs:sequence>
	|			<xs:element name=""file_name""/>
	|			<xs:element name=""description""/>
	|			<xs:element name=""file_content""/>
	|		</xs:sequence>
	|	</xs:complexType>
	|
	|</xs:schema>";

Чтение = Новый ЧтениеXML;
Чтение.УстановитьСтроку(ТекстСхемы);

Построитель = Новый ПостроительDOM;
Документ = Построитель.Прочитать(Чтение);

ПостроительСхем = Новый ПостроительСхемXML;
Схема = ПостроительСхем.СоздатьСхемуXML(Документ.ЭлементДокумента);

НаборСхем = Новый НаборСхемXML;
НаборСхем.Добавить(Схема);

Фабрика = Новый ФабрикаXDTO(НаборСхем);

ТипОбъекта = Фабрика.Тип("http://www.sample-package.org", "ТипОбъекта1");
Объект = Фабрика.Создать(ТипОбъекта);

Объект.file_name = "тест101.txt";
Объект.description = "тест1";
Объект.file_content = ПолучитьДвоичныеДанныеИзBase64Строки("MTEyMjMzYWJjZGVm");

Запись = Новый ЗаписьXML;
Запись.УстановитьСтроку();
Фабрика.ЗаписатьXML(Запись, Объект, "Объект");

Результат = Запись.Закрыть();
Сообщить(Результат);
Показать
А так-то, конечно, не записываются. Точно-точно.
Serg2000mr; +1 Ответить
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот