base64Binary: как распарсить?

1. stashigor 08.08.14 16:49 Сейчас в теме
Коллеги, помогите. Делаю GET запрос, получаю тело как строку вида:

<ba se64Binary xmlns="http://schemas.microsoft.com/2003/10/Serialization/">PD94bWwgdmVyc2lvbj0iMS4wIj8+DQo8cmVzcG9uc2U+DQogIDxyZXN1bHQ+MDwvcmVzdWx0Pg0KICA8ZGVzY3JpcHRpb24+b2s8L2Rlc2NyaXB0aW9uPg0KICA8dHJhbnNhY3Rpb25zPg0KICAgIDx0cmFuc2FjdGlvbj4NCiAgICAgIDxpZD4wPC9pZD4NCiAgICAgIDxwZXJzb25faWQ+MTwvcGVyc29uX2lkPg0KICAgICAgPGNhcmRfaWQ+RkE3NkI4NDUzREJDNzY8L2NhcmRfaWQ+DQogICAgICA8YW1vdW50PjEwMDAwPC9hbW91bnQ+DQogICAgICA8cGFydG5lcl9pZD5QQTc2ODQ1PC9wYXJ0bmVyX2lkPg0KICAgICAgPHR5cGU+RDwvdHlwZT4NCiAgICA8L3RyYW5zYWN0aW9uPg0KICAgIDx0cmFuc2FjdGlvbj4NCiAgICAgIDxpZD4xPC9pZD4NCiAgICAgIDxwZXJzb25faWQ+MjwvcGVyc29uX2lkPg0KICAgICAgPGNhcmRfaWQ+RkE3NkI5MzQzREJDMzE8L2NhcmRfaWQ+DQogICAgICA8YW1vdW50PjExMDAwMDwvYW1vdW50Pg0KICAgICAgPHBhcnRuZXJfaWQ+VEI0ODM2MDwvcGFydG5lcl9pZD4NCiAgICAgIDx0eXBlPkQ8L3R5cGU+DQogICAgPC90cmFuc2FjdGlvbj4NCiAgICA8dHJhbnNhY3Rpb24+DQogICAgICA8aWQ+MjwvaWQ+DQogICAgICA8cGVyc29uX2lkPjE8L3BlcnNvbl9pZD4NCiAgICAgIDxjYXJkX2lkPkZBNzZCODQ1M0RCQzc2PC9jYXJkX2lkPg0KICAgICAgPGFtb3VudD4xMDAwPC9hbW91bnQ+DQogICAgICA8cGFydG5lcl9pZD5QQTc2ODQ1PC9wYXJ0bmVyX2lkPg0KICAgICAgPHR5cGU+QzwvdHlwZT4NCiAgICA8L3RyYW5zYWN0aW9uPg0KICAgIDx0cmFuc2FjdGlvbj4NCiAgICAgIDxpZD4zPC9pZD4NCiAgICAgIDxwZXJzb25faWQ+MzwvcGVyc29uX2lkPg0KICAgICAgPGNhcmRfaWQ+RkM0NzhERUJGNjQzNTY8L2NhcmRfaWQ+DQogICAgICA8YW1vdW50PjEyMzQ2MjE8L2Ftb3VudD4NCiAgICAgIDxwYXJ0bmVyX2lkPjIyMDQxMDQ1PC9wYXJ0bmVyX2lkPg0KICAgICAgPHR5cGU+RDwvdHlwZT4NCiAgICA8L3RyYW5zYWN0aW9uPg0KICA8L3RyYW5zYWN0aW9ucz4NCjwvcmVzcG9uc2U+</base64Binary>


По идее это xml, закодированный в base64Binary. Как его достать? Всю голову уже сломал.

Если получить тело как двичные данные и попробовать опеределить тип данных XML
XMLТипЗнч(ОтветHTTP.ПолучитьТелоКакДвоичныеДанные())
, то выдает следующее:

URIПространстваИмен: "http://www.w3.org/2001/XMLSchema"
ИмяТипа: "base64Binary"

И что делать дальше?
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. dj_serega 394 08.08.14 17:09 Сейчас в теме
(1) stashigor, А что будет если:
ДанныеОтвета = ОтветHTTP.ПолучитьТелоКакДвоичныеДанные();
ЗначениеСXML = XMLЗначение(Тип("ДвоичныеДанные"), ДанныеОтвета );
ЗначениеСXML.Записать("C:\Мой файл.jpg");
3. stashigor 08.08.14 17:19 Сейчас в теме
(2) dj_serega, ничего не будет, ошибка будет. ДанныеОтвета должны быть строкой, а не двоичными данными, но даже если подставить строку, то но выходе пустой файл.
4. dj_serega 394 08.08.14 17:46 Сейчас в теме
(3) stashigor, может вот так? Base64Значение()
5. stashigor 08.08.14 17:52 Сейчас в теме
(4) dj_serega,

этот метод не подходит - он из строки получает двоичные данные, а мне нужно наоборот. Но если даже воспользоваться методом Base64Строка(Текст), где Текст = ОтветHTTP.ПолучитьТелоКакСтроку(), то тоже не работает. Возвращает неопределено.
13. ZloyGenii 16.03.20 17:46 Сейчас в теме
(1)

Здравствуйте.
Не подскажите в итоге как вы из двоичных данныx получили xml ?

На входе имею некие "ДвоичныеДанные" для которых метод
СериализаторXDTO.XMLТипЗнч(ДвоичныеДанные)
Возвращает как у вас Пространство XML-схема, тип base64Binary

Что вы дальше делали с этими двоичными данными чтобы выдрать из них xml ? А то тоже никак не могу найти решения, либо запутал сам себя...
14. ZloyGenii 17.03.20 08:35 Сейчас в теме
(1)
Прост


Не подскажите как вы дальше (можно пример кода ? :)) из двоичных данных получили нужный XML....

На входе имею двоичные данные тип значения у которых как у вас xml закодированный по base64Binary.

Заранее большое спасибо за любую подсказку.
6. Гость 08.08.14 18:09
Это бросайте програмировать) Это XML Который содержит файлик в котором XML )))

<?xml version="1.0"?>
<response>
<result>0</result>
<description>ok</description>
<transactions>
<transaction>
<id>0</id>
<person_id>1</person_id>
<card_id>FA76B8453DBC76</card_id>
<amount>10000</amount>
<partner_id>PA76845</partner_id>
<type>D</type>
</transaction>
<transaction>
<id>1</id>
<person_id>2</person_id>
<card_id>FA76B9343DBC31</card_id>
<amount>110000</amount>
<partner_id>TB48360</partner_id>
<type>D</type>
</transaction>
<transaction>
<id>2</id>
<person_id>1</person_id>
<card_id>FA76B8453DBC76</card_id>
<amount>1000</amount>
<partner_id>PA76845</partner_id>
<type>C</type>
</transaction>
<transaction>
<id>3</id>
<person_id>3</person_id>
<card_id>FC478DEBF64356</card_id>
<amount>1234621</amount>
<partner_id>22041045</partner_id>
<type>D</type>
</transaction>
</transactions>
</response>

Вот ваш файлик :D
7. nSpirit2 08.08.14 18:11 Сейчас в теме
Ололоша прав вам надо не всю строку а только
PD94bWwgdmVyc2lvbj0iMS4wIj8+DQo8cmVzcG9uc2U+DQogIDxyZXN1bHQ+­MDwvcmVzdWx0Pg0KICA8ZGVzY3JpcHRpb24+b2s8L2Rlc2NyaXB0aW9uPg0K­ICA8dHJhbnNhY3Rpb25zPg0KICAgIDx0cmFuc2FjdGlvbj4NCiAgICAgIDxp­ZD4wPC9pZD4NCiAgICAgIDxwZXJzb25faWQ+MTwvcGVyc29uX2lkPg0KICAg­ICAgPGNhcmRfaWQ+RkE3NkI4NDUzREJDNzY8L2NhcmRfaWQ+DQogICAgICA8­YW1vdW50PjEwMDAwPC9hbW91bnQ+DQogICAgICA8cGFydG5lcl9pZD5QQTc2­ODQ1PC9wYXJ0bmVyX2lkPg0KICAgICAgPHR5cGU+RDwvdHlwZT4NCiAgICA8­L3RyYW5zYWN0aW9uPg0KICAgIDx0cmFuc2FjdGlvbj4NCiAgICAgIDxpZD4x­PC9pZD4NCiAgICAgIDxwZXJzb25faWQ+MjwvcGVyc29uX2lkPg0KICAgICAg­PGNhcmRfaWQ+RkE3NkI5MzQzREJDMzE8L2NhcmRfaWQ+DQogICAgICA8YW1v­dW50PjExMDAwMDwvYW1vdW50Pg0KICAgICAgPHBhcnRuZXJfaWQ+VEI0ODM2­MDwvcGFydG5lcl9pZD4NCiAgICAgIDx0eXBlPkQ8L3R5cGU+DQogICAgPC90­cmFuc2FjdGlvbj4NCiAgICA8dHJhbnNhY3Rpb24+DQogICAgICA8aWQ+Mjwv­aWQ+DQogICAgICA8cGVyc29uX2lkPjE8L3BlcnNvbl9pZD4NCiAgICAgIDxj­YXJkX2lkPkZBNzZCODQ1M0RCQzc2PC9jYXJkX2lkPg0KICAgICAgPGFtb3Vu­dD4xMDAwPC9hbW91bnQ+DQogICAgICA8cGFydG5lcl9pZD5QQTc2ODQ1PC9w­YXJ0bmVyX2lkPg0KICAgICAgPHR5cGU+QzwvdHlwZT4NCiAgICA8L3RyYW5z­YWN0aW9uPg0KICAgIDx0cmFuc2FjdGlvbj4NCiAgICAgIDxpZD4zPC9pZD4N­CiAgICAgIDxwZXJzb25faWQ+MzwvcGVyc29uX2lkPg0KICAgICAgPGNhcmRf­aWQ+RkM0NzhERUJGNjQzNTY8L2NhcmRfaWQ+DQogICAgICA8YW1vdW50PjEy­MzQ2MjE8L2Ftb3VudD4NCiAgICAgIDxwYXJ0bmVyX2lkPjIyMDQxMDQ1PC9w­YXJ0bmVyX2lkPg0KICAgICAgPHR5cGU+RDwvdHlwZT4NCiAgICA8L3RyYW5z­YWN0aW9uPg0KICA8L3RyYW5zYWN0aW9ucz4NCjwvcmVzcG9uc2U+

Вот эту часть)
8. stashigor 11.08.14 09:42 Сейчас в теме
(7) nSpirit2,
(6) Ололошка,

спасибо за подсказку, этот момент я как-то упустил.

Но все равно: получил я эту строку, а как из неё данные то достать? Как Ололошка из строки "PD94bWwgdmVyc2lvbj0iMS4w...." получил "<?xml version="1.0"?>
<response>
<result>0</result>
<description>ok</description>..." ? Каким способом?

Можно к это строке применить метод base64Значение, на выходе получаю некие двоичные данные и что дальше?
9. nSpirit2 11.08.14 13:06 Сейчас в теме
Привет еще раз. Как Ололоша уже сказал ответ твой являеться тоже XML файлом. Можешь получить из него данные для Base64Значение(). Которая в свою очередь вернет вам двоичные данные. Их имеет смысл сохранить файл содержание которого привел Ололоша и уже файл парсить используя что то вроде ЧтениеXML. Это уж что любите и что вам удобней. Вот и все)
10. stashigor 11.08.14 15:27 Сейчас в теме
(9) nSpirit2,
да, через сохранение в файл и последующее открытие все получилось. А можно как то сделать, чтобы не нужно было в файл сохранять? Как ДвоичныеДанные в строку xml преобразовать?
11. nSpirit2 11.08.14 16:10 Сейчас в теме
Если коротко то никак.. Чем вам файл то не нравиться?
12. stashigor 11.08.14 16:11 Сейчас в теме
(11) nSpirit2,
не нравится лишним обращением к дисковой подсистеме. А так конечно можно.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот