|   |   | 
| 
 | разбор хмл | ☑ | ||
|---|---|---|---|---|
| 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> | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |