|
разбор хмл | ☑ | ||
---|---|---|---|---|
0
MiniMuk
16.04.14
✎
10:27
|
Есть ответ от веб-сервиса в виде хмл примерно такого вида
Как и чем правильно воспользоваться чтобы найти нужную мне строку(строки) например по атрибуту SOC Вроде есть XPath (XPath), подскажите как правильно воспользоваться по СП не могу понят, не хочеться использовать поузловое чтение |
|||
1
Maxus43
16.04.14
✎
10:28
|
без "поузлового" чтения - надо схему xml этого файла
|
|||
2
MiniMuk
16.04.14
✎
10:57
|
(1) у меня в описании функции, ответ на запрос выглядит так, правильно ли я понимаю что это является схемой ответа?
|
|||
3
spectre1978
16.04.14
✎
11:00
|
Вот здесь Семерка работает с любым msxml парсером, или нужен конкретный номер?
я сбрасывал пример работы с DOM/XPath. Вообще если погуглить, то примеры в сети находятся, немного, но есть |
|||
4
MiniMuk
16.04.14
✎
11:02
|
(3) Спасибо, пойду почитаю
|
|||
5
MiniMuk
16.04.14
✎
11:03
|
Начал разбираться с хмл, просто плаваю еще в понятиях
|
|||
6
Maxus43
16.04.14
✎
11:04
|
(2) это не схема, почитай ещё про схему xml, она типа так выглядит
<xs:complexType name="Элемент.Док"> <xs:sequence> <xs:element name="Ref" type="tns:AnyRef"/> <xs:element name="Code"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:length value="9"/> </xs:restriction> </xs:simpleType> </xs:element> <xs:element name="Description"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:minLength value="1"/> <xs:maxLength value="100"/> </xs:restriction> </xs:simpleType> </xs:element> </xs:sequence> </xs:complexType> |
|||
7
Александр_
Тверь 16.04.14
✎
11:06
|
Попробуй через ОбъектXDTO.
Читаешь XML в него, а потом по нему бегаешь и ищешь что тебе нужно. Примерно вот так: ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.ОткрытьФайл(ИмяВыходногоФайла); ОбъектXDTO = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML); |
|||
8
Maxus43
16.04.14
✎
11:10
|
(7) без схемы не взлетит, тип неизвестен
|
|||
9
MiniMuk
16.04.14
✎
11:11
|
Поискал, в описании сервиса .../WebService/DOL.asmx?
|
|||
10
Maxus43
16.04.14
✎
11:13
|
(9) вот это схема уже
|
|||
11
Maxus43
16.04.14
✎
11:13
|
попробуй в конфигураторе всю схему загрузить в пакет XDTO, там же можно проверит схему на ошибки
|
|||
12
MiniMuk
16.04.14
✎
11:15
|
Мне надо эту схему скормить ФабрикаXDTO а потом пробовать читать?
|
|||
13
Maxus43
16.04.14
✎
11:18
|
(11) если схема правильная см (11), то да. в СП там написаны варианты чтения XML по схеме
|
|||
14
MiniMuk
16.04.14
✎
11:25
|
1с не распознет всю схему, пишет фатальная ошибка разбора
|
|||
15
Maxus43
16.04.14
✎
11:26
|
(14) дело не в 1с, дело в схеме. Не правильная значит, этот формат универсален
|
|||
16
MiniMuk
16.04.14
✎
11:39
|
Описание веб сервиса (../WebService/DOL.asmx?WSDL)
и схема это вещи разные? У (6) элементы описываются <xs:complexType name а у меня <s:element minOccurs="1" не совсем понимаю это одно и тоже и они как то связаны? Заголовов описания вебсерива такой
|
|||
17
Александр_
Тверь 16.04.14
✎
11:42
|
(8) с чего это?
Я так читаю совершенно неизвестные XML файлы без всякой схемы. |
|||
18
Александр_
Тверь 16.04.14
✎
11:43
|
(12) скажу еще раз.
Лично работаю по варианту из (7). Без всяких схем и т.д. Просто пробегаюсь по объектXDTO и выбираю нужные мне данные. |
|||
19
MiniMuk
16.04.14
✎
11:45
|
(18) Можно поинтересоваться, как
|
|||
20
Maxus43
16.04.14
✎
11:50
|
(17) без схемы только с примитивными типами ЕМНИП, сложные типы описаны только в схеме...
(19) ну попробуй как в (7) |
|||
21
Александр_
Тверь 16.04.14
✎
11:52
|
(19) ну именно как в (7) написано.
Посылаю запрос на сервер (левый, не 1С). Он мне возвращает XML. Я его загружаю как в (7) описано. Потом пробегаюсь по объекту и выбираю нужные мне данные (не объектные, конечно). |
|||
22
Александр_
Тверь 16.04.14
✎
11:53
|
В любом случае это на много удобнее чем как-то "ручками" парсить.
|
|||
23
Maxus43
16.04.14
✎
11:53
|
судя по (0) - там описана таб часть, это уже не простой тип, и без схемы непонятно как его обходить. В лучшем случае будет просто аналогично тупому перебору узлов, чего автор и хотел избежать
|
|||
24
MiniMuk
16.04.14
✎
12:02
|
(23) Угу, у меня есть несколько справочников, связка серийного номер с тарифным планом (оператор связи) связь тарифного плана с услугами, связь сериника с телефонным номером, надо все это в кучу собрать. Вот думаю как под каждый справочник свой перебор не писать
|
|||
25
MiniMuk
16.04.14
✎
12:03
|
Всем спасибо, поду вникать в то что насоветовали
|
|||
26
Maxus43
16.04.14
✎
12:05
|
(25) посомтри в сторону сторонних программ, есть мелкие бесплатные проги, позволяющие например по образцу файла XML сделать его схему (но опять же там ограничение есть, с хитрыми типами не сможет совладать, самому надо описывать).
Ну и (7) для очистки совести без схем всяких - тоже |
|||
27
MiniMuk
18.04.14
✎
08:24
|
Загрузил я свой справочник, инетесно, поиск по нему есть?
http://s1.ipicture.ru/uploads/20140418/PT5oF190.png |
|||
28
MiniMuk
18.04.14
✎
08:27
|
Даже загрузил типы по описанию сервиса
ФабрикаXDTO.Тип(ОписаниеСервиса.xml,"RowScladLink"); Где в описании вебсервиса строка справочник так расписана <s:complexType name="RowScladLink"> <s:complexContent mixed="false"> <s:extension base="tns:LibRow"> <s:attribute name="SNB" type="s:string"/> <s:attribute name="Type" type="tns:LinkType" use="required"/> <s:attribute name="SerNum" type="s:string"/> <s:attribute name="SOC" type="s:string"/> <s:attribute name="HLR" type="s:string"/> <s:attribute name="RegionCode" type="s:string"/> </s:extension> </s:complexContent> </s:complexType> |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |