![]() |
![]() |
![]() |
|
Как прочитать 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 |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |