|
Как распарсить xml-файл | ☑ | ||
---|---|---|---|---|
0
АртемП
05.03.21
✎
13:44
|
Подключаемся к системе быстрых платежей Сбера - P2P. Сбер дал утилиту обмена и пример связи ее с 1С.
Результат пишется в лог файл в виде xml. Как его распарсить ? Можите подсказать примером ? Вот тестовый образец лога, который надо распарсить. ========= ПСА4/01.02.2021 0:00:00 || e-com *** 0 | 04.03.2021 11:58:02 | registerOrder <<< запрос <order merchantOrderNumber='202103-04-115802-8414#' description='Иванов, 2000;ПСА4, 01.02.2021 0:00:00;Тест' amount='100' currency='643' language='' sessionTimeoutSecs='600' bindingId='31866fdf-059b-7f7c-95ac-30385e480309'><returnUrl>https://ya.ru</returnUrl><params name='mark' value='202103-04-115802-8414'/> <features><feature>FORCE_TDS</feature></features></order> >>> ответ <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns1:registerOrderResponse xmlns:ns1="http://engine.paymentgate.ru/webservices/merchant"><return orderId="2203c757-937a-7617-a8f0-30135e480309" errorCode="0" errorMessage="Успешно"><formUrl>https://3dsec.sberbank.ru/payment/merchants/p2p_aft_oct/payment_binding_ru.html?mdOrder=2203c757-937a-7617-a8f0-30135e480309</formUrl></return></ns1:registerOrderResponse></soap:Body></soap:Envelope> *** 1 | 04.03.2021 11:58:04 | paymentOrderBinding <<< запрос <order mdOrder='2203c757-937a-7617-a8f0-30135e480309' bindingId='31866fdf-059b-7f7c-95ac-30385e480309'></order> >>> ответ <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns1:paymentOrderBindingResponse xmlns:ns1="http://engine.paymentgate.ru/webservices/merchant"><return info="Ваш платёж обработан, происходит переадресация..." redirect="https://3dsec.sberbank.ru/payment/rest/finish3ds.do?lang=ru" acsUrl="https://web.rbsuat.com/acs/auth/start.do" paReq="eJxVUl1z4jAM/CtM3oMd40BghDtt6QczF+CulLnpS8c4akivcajjNDS//pwA197brqRZSSvBxSF/632gKbNCT72gT70ealUkmU6n3uP61o+8CwHrnUGcPaCqDAqIsSxlir0smXpScTXAsfTHQcR8vuXcl5JGvlRIw2QYjl4U8wSsLn/hu4BTI+H69BmQM3WKRu2ktgKker+aLwRnoyGlQE4UcjTzmQjYgIfDUQTkyEHLHIXF0j5vClNobHb+xhYmRwuky4EqKm3NpxjyAZAzgcq8iZ21+wkhdV33yy2ardR/+qYC0uaAfE20qlpUOq1Dloi4SetFE9P49YbF6598MUs/l7PHYLmeT4G0FZBIi4JRFtAB5T0aTcJoQkMgXRxk3g4hgm67I4Z92+LyW+J7AJzpxt3kvMOZAR72bmVX4Zz8h4F8zXt93/qprHPq+qP50cRj+3Snb+9X8mG8vPr9uqlTq+86l7uiVjFz9jAeHCVbAqSVIacDktPtHfrvJ/4CVFLBGA==" errorCode="0"/></ns1:paymentOrderBindingResponse></soap:Body></soap:Envelope> *** 2 | 04.03.2021 13:03:25 | getOrderStatusExtended <<< запрос <order orderId='2203c757-937a-7617-a8f0-30135e480309' language='en'><merchantOrderNumber>202103-04-115802-8414#</merchantOrderNumber></order> >>> ответ <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns1:getOrderStatusExtendedResponse xmlns:ns1="http://engine.paymentgate.ru/webservices/merchant"><return orderNumber="202103-04-115802-8414#" orderStatus="6" actionCode="-2007" actionCodeDescription="Payment declined. Please, contact with merchant." amount="100" currency="643" date="2021-03-04T11:58:03.770+03:00" orderDescription="Иванов, 2000;ПСА4, 01.02.2021 0:00:00;Тест" ip="109.195.53.209" errorCode="0" errorMessage="Success"><merchantOrderParams name="mark" value="202103-04-115802-8414"/><attributes name="mdOrder" value="2203c757-937a-7617-a8f0-30135e480309"/><cardAuthInfo maskedPan="411111**1111" expiration="202412" cardholderName="CARD HOLDER"/><bindingInfo clientId="test_Restoran-Nov" bindingId="31866fdf-059b-7f7c-95ac-30385e480309"/><terminalId>12345678</terminalId><paymentAmountInfo paymentState="DECLINED" approvedAmount="0" depositedAmount="0" refundedAmount="0"/><bankInfo bankName="Alfa-Bank" bankCountryCode="RU" bankCountryName="Russian Federation"/></return></ns1:getOrderStatusExtendedResponse></soap:Body></soap:Envelope> |
|||
1
mikecool
05.03.21
✎
13:45
|
ЧтениеXML
|
|||
2
Kassern
05.03.21
✎
13:46
|
обычная xml
А если вам еще сбер даст XML схему то вообще красота) |
|||
3
PLUT
05.03.21
✎
13:57
|
(0) скорми фабрике XDTO
|
|||
4
АртемП
05.03.21
✎
13:57
|
(1)а где посмотреть что то на эту тему.
|
|||
5
АртемП
05.03.21
✎
13:57
|
(3)Это как ?
|
|||
6
АртемП
05.03.21
✎
13:59
|
Есть ли пример
|
|||
7
Timon1405
05.03.21
✎
14:00
|
||||
8
АртемП
05.03.21
✎
14:35
|
спасибо!
А подскажите - по приведенной структуре это точно xml bkb может json ? Просто не пойму, где начинается заголовок |
|||
9
АртемП
05.03.21
✎
14:35
|
Кто подскажет в пример (0) где начинается заголовок xml
|
|||
10
Kassern
05.03.21
✎
15:24
|
(9) поставь себе Notepad++ и открой свой текст в нем. Выбери синтаксис XML и увидишь куски xml запросов и ответов
|
|||
11
Fedor-1971
05.03.21
✎
15:31
|
(9) нет там заголовка, если хочешь, то приклей сам
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <ns1:registerOrderResponse xmlns:ns1="http://engine.paymentgate.ru/webservices/merchant"> <return orderId="2203c757-937a-7617-a8f0-30135e480309" errorCode="0" errorMessage="Успешно"> <formUrl> https://3dsec.sberbank.ru/payment/merchants/p2p_aft_oct/payment_binding_ru.html?mdOrder=2203c757-937a-7617-a8f0-30135e480309 </formUrl> </return> </ns1:registerOrderResponse> </soap:Body> </soap:Envelope>; |
|||
12
Fedor-1971
05.03.21
✎
15:40
|
11+ http://engine.paymentgate.ru/webservices/merchant - тут логин в АльфаБанк, проверь на всякий случай
|
|||
13
ДенисЧ
05.03.21
✎
15:53
|
(8) Что не json - 292%
|
|||
14
АртемП
05.03.21
✎
17:38
|
(10) у меня Far стоит.
там вычленяет и показывает куски кода. Уже голову сломал. Как я понял - это текстовый фай, в котором через куски разделителей пишутся логи в виде кусков xml. т.е. надо почленить лог на транзакции и дальше вычленять эти куски xml |
|||
15
NorthWind
05.03.21
✎
19:23
|
(0) это не в виде XML. Это текстовый файл с фрагментами XML. А что конкретно надо из него достать? Вообще задача довольно мерзкая - если нужно разбирать содержимое XML, то придется сначала выдирать эти куски, потом, возможно, присобачивать к ним заголовки и загонять в какой-нибудь XML-парсер. Целое дело. Я бы сильно подумал прежде чем таким заниматься, нет ли более вменяемых способов получить что нужно.
|
|||
16
АртемП
05.03.21
✎
23:57
|
(15)вот! именно об этом я и написал в (14)
|
|||
17
Asmody
06.03.21
✎
01:01
|
Если загуглить soap:Envelope, многое станет яснее.
|
|||
18
Кирпич
06.03.21
✎
10:44
|
чо тут думать. открыл файл. перешел куда надо. прочитал до первого разделителя. читай до следующего разделителя и парси XML
В 1С же есть потоки, ЧтениеДанных и всё такое http://catalog.mista.ru/1c/articles/1130284/ |
|||
19
ДедМорроз
06.03.21
✎
12:09
|
Это вообще не классический xml,так как нету заголовка,это блочный формат на подобии xmpp протокола,где каждое событие заворачивается в отдельный таг.
ЧтениеXML без дополнительной подготовки его не съест. |
|||
20
ДедМорроз
06.03.21
✎
12:12
|
Самое простое-читаем как текст,если нашли слово запрос с тремя галочками,то далее до слова ответ идут данные запроса,которые в текст и уже скормить ЧтениеXML как строку,а потом также ответ до запроса.
Ну и проверять,что нет строки с тремя галочками - она внутри XML файла быть не может(если не вспоминать,что есть CDATA и комментарий) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |