|
Список XDTO | ☑ | ||
---|---|---|---|---|
0
Zixxx
14.07.13
✎
20:07
|
Есть схема
<xs:complexType name ="Остатки"> <xs:sequence> <xs:element name="Номенклатура" type="tns:ЭлементНоменклатуры" minOccurs="0" maxOccurs="-1"/> </xs:sequence> </xs:complexType> <xs:complexType name="ЭлементНоменклатуры"> <xs:sequence> <xs:element name="НоменклатураID" type="xs:string" /> <xs:element name="ХарактеристикаID" type="xs:string" /> <xs:element name="Количество" type="xs:int" /> </xs:sequence> </xs:complexType> Проблема в том что если в Номенклатуру записывается только один Элемент Номенклатуры, то при чтении xml у меня Номенклатура становиться объектом, а если значений больше двух то все нормально, получаю список. Что еще нужно указать в схеме, чтобы даже при одной записи у меня получался Список XDTO |
|||
1
Rie
14.07.13
✎
20:28
|
Не уверен, но может быть, имеет смысл попробовать xsd:list?
|
|||
2
Fragster
гуру
14.07.13
✎
20:43
|
надо схему при импорте тоже указывать
|
|||
3
Cyberhawk
14.07.13
✎
20:48
|
Пиши еще и пустую ссылку заодно
|
|||
4
Zixxx
14.07.13
✎
20:51
|
(1) Там я явно указываю тип на ЭлементНоменклатуры, по моему xsd:list там воткнуть некуда уже.
(2) Указываю |
|||
5
Rie
14.07.13
✎
20:56
|
(4) list - а внутри уже ЭлементНоменклатуры. По идее, тогда list вынужден будет обработаться.
|
|||
6
Zixxx
14.07.13
✎
21:04
|
(5) Можешь пример привести, не понимаю
|
|||
7
Fragster
гуру
14.07.13
✎
21:08
|
(4) если бы указывал - то тогда оно было бы списком
|
|||
8
Zixxx
14.07.13
✎
21:20
|
(7) При импорте это при чтении?
|
|||
9
Fragster
гуру
14.07.13
✎
21:50
|
(8) ога
|
|||
10
Zixxx
14.07.13
✎
21:50
|
При чтении подсовываю схему, таким образом...
|
|||
11
Zixxx
14.07.13
✎
21:51
|
ФайлыXSD = Новый Массив();
ФайлыXSD.Добавить(ВременныйФайл); ФабрикаПрихода = СоздатьФабрикуXDTO(ФайлыXSD); НовыйЧтение = Новый ЧтениеXML; НовыйЧтение.ОткрытьФайл(ПутьДоФайлаДанных); Документ = ФабрикаПрихода.ПрочитатьXML(НовыйЧтение); Что не так делаю? |
|||
12
Fragster
гуру
14.07.13
✎
21:53
|
(11) ты не сообщаешь тип в прочитатьXML
|
|||
13
Zixxx
14.07.13
✎
21:57
|
(12) Т.е. если при записи XML явно типы не указывались, то при чтении для каждого объекта придется указывать с каким типом я его хочу прочитать?
|
|||
14
Zixxx
14.07.13
✎
21:58
|
(12) А то что я при чтении указываю целую схему с типами это не считается?
|
|||
15
Fragster
гуру
14.07.13
✎
22:10
|
(14) а в схеме указано, какой тип у корневого элемента?
|
|||
16
Zixxx
14.07.13
✎
22:19
|
(15) Нет, а какой тип мне поставить complexType?
|
|||
17
Fragster
гуру
14.07.13
✎
22:28
|
попробуй вначале дописать
<xs:element name ="Остатки" type="Остатки"> возможно у типа Остатки придется поменять имя на ОтсткиТип или что-нибудь типа того |
|||
18
Fragster
гуру
14.07.13
✎
22:28
|
<xs:element name ="Остатки" type="Остатки"/>
|
|||
19
acsent
14.07.13
✎
22:51
|
проще сделать функцию ПолучитьСписокXDTO, и если количество 1 в массив запихивать
|
|||
20
etc
15.07.13
✎
01:06
|
Попробуй так:
ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.ОткрытьФайл(Файл.ПолноеИмя); ТипXML = ПолучитьXMLТип(ЧтениеXML); Данные = ФабрикаПрихода.ПрочитатьXML(ЧтениеXML, ФабрикаПрихода.Тип(ТипXML)); |
|||
21
etc
15.07.13
✎
01:10
|
Если XML содержит описание namespace-а то ПолучитьXMLТип что-то вернет. А если не содержит тогда нужно как-то по другому выкручиваться.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |