Вход | Регистрация
 

Как распарсить xml-файл

Как распарсить xml-файл
Я
   АртемП
 
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>
   mikecool
 
1 - 05.03.21 - 13:45
ЧтениеXML
   Kassern
 
2 - 05.03.21 - 13:46
обычная xml
А если вам еще сбер даст XML схему то вообще красота)
   PLUT
 
3 - 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
Есть ли пример
   Timon1405
 
7 - 05.03.21 - 14:00
   АртемП
 
8 - 05.03.21 - 14:35
спасибо!

А подскажите - по приведенной структуре это точно xml bkb может json ?
Просто не пойму, где начинается заголовок
   АртемП
 
9 - 05.03.21 - 14:35
Кто подскажет в пример (0) где начинается заголовок xml
   Kassern
 
10 - 05.03.21 - 15:24
(9) поставь себе Notepad++ и открой свой текст в нем. Выбери синтаксис XML и увидишь куски xml запросов и ответов
   Fedor-1971
 
11 - 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>;
   Fedor-1971
 
12 - 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
   NorthWind
 
15 - 05.03.21 - 19:23
(0) это не в виде XML. Это текстовый файл с фрагментами XML. А что конкретно надо из него достать? Вообще задача довольно мерзкая - если нужно разбирать содержимое XML, то придется сначала выдирать эти куски, потом, возможно, присобачивать к ним заголовки и загонять в какой-нибудь XML-парсер. Целое дело. Я бы сильно подумал прежде чем таким заниматься, нет ли более вменяемых способов получить что нужно.
   АртемП
 
16 - 05.03.21 - 23:57
(15)вот! именно об этом я и написал в (14)
   Asmody
 
17 - 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 и комментарий)

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.