Имя: Пароль:
1C
1С v8
Как прочитать xml содержащий xsd
0 DES
 
31.12.15
22:04
есть строка содержащая

<?xml version="1.0" encoding="UTF-8"?>
<records>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"; attributeFormDefault="unqualified" elementFormDefault="qualified">
</xs:schema>
<data>
</data>

как правильно ее прочитать чтобы не поэлементно читать?
я вырезаю из строки блок
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"; attributeFormDefault="unqualified" elementFormDefault="qualified">
</xs:schema>

А потом делаю:

СхемаXML = Новый СхемаXML;
СхемаXML.РасположениеСхемы = "СхемаXSD";
СхемыXML = Новый НаборСхемXML;
СхемыXML.Добавить(СхемаXML);
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.УстановитьСтроку(ДанныеXML);
Фабрика = Новый ФабрикаXDTO(СхемыXML);
Результат= Фабрика.ПрочитатьXML(ЧтениеXML);

но чувствую что что-то не так.
Как сразу получить "Результат" без изменения исходной строки ?
1 Garykom
 
гуру
31.12.15
22:15
2 DES
 
31.12.15
22:22
(1) читал, там нет ответа на мой вопрос
3 DES
 
31.12.15
22:28
(2)+ Вопрос в том что файл или строка содержат и схему и данные, а во всех примерах они в отдельных файлах.
4 Garykom
 
гуру
31.12.15
22:33
(2) СоздатьФабрикуXDTO напрямую не пашет?
5 Serginio1
 
01.01.16
12:02
Не забыть про ПерейтиКСодержимому

Как в XSD-схеме задать массив из одного элемента?

Ну и как правильно тебе сказали СоздатьФабрикуXDTO значительно проще
6 DES
 
01.01.16
15:30
(4)(5) во всех примерах используют раздельные данные схем и данных, а у меня все в одном
7 DES
 
01.01.16
15:57
(5)  Для СоздатьФабрикуXDTO(<Путь>, <Пакеты>)
нужен путь к файлам схем.
А у меня строка, не писать же мне строку в файл, а потом ее читать.
8 Serginio1
 
01.01.16
16:11
(6) Тебе надо отделять схему и данные
(7) Угу а РасположениеСхемы это, что?
v8: Как быстро считать файл XML по схеме XSD в таблицу значений?
9 DES
 
01.01.16
16:33
(8)  >Тебе надо отделять схему и данные
Это без юмора ?

Если я разделяю данные, то все работает, (само разделение тормозит), вот я и спрашиваю как без манипуляций с текстом обойтись.
10 DES
 
01.01.16
16:56
СтрXML =  <<< тут строка со схемой и данными
Пример: Фабрика = СоздатьФабрикуXDTO(Схема);
Как указать что Схема находится в части строки СтрXML ?
11 Serginio1
 
01.01.16
17:06
(9) А ты правильно разделяй.
ЧтениеXML в строку XML
12 Записьдампа
 
01.01.16
17:11
(8) Это называется Inline Schema, причем твой любимый .NET ее даже поддерживает. Неожиданно, не правда ли =)
https://msdn.microsoft.com/en-us/library/ms759142(v=vs.85).aspx

(10) В 1С никак не указать, оно такое не поддерживает. Надо поточно читать по элементам и собирать руками.

1) Открыть файл через ЧтениеXML
2) Встать на узел xs:schema
3) Создать ПостроительDOM и через него прочитать DOM документ из текущего узла чтения
4) Получить СхемуXML из DOM документа
5) Создать ФабрикуXTDO
6) Перейти в чтении на следующий узел, уйдя с узла-описания схемы
7) Прочитать объект при помощи свежесозданной фабрики

Ну и как всегда не забыть про указание типа объекта при чтении.
13 Serginio1
 
01.01.16
18:22
ПосстроительDOM засасывает все данные. Хотя могу и ошибаться.
Проще использовать (11)
XDTO по схеме XSD
14 Записьдампа
 
01.01.16
19:18
(13) Не, в 8.3 точно - в пределах текущего узла.
Можно ещё попробовать выдать элементу описания схемы идентификатор и указать его в schemalocation файла... Но сомневаюсь, что взлетит, у 1с парсер какой-то лохматый.
15 Serginio1
 
01.01.16
19:27
(14) Ну (0) может использовать и .Net
https://msdn.microsoft.com/ru-ru/library/system.xml.xmlreader.readouterxml.aspx
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший