powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Поместить строку как base64binary в xml-документ
10 сообщений из 10, страница 1 из 1
Поместить строку как base64binary в xml-документ
    #39510562
ktv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задача следующая.
Нужно сформировать такой документ:

Код: xml
1.
2.
3.
4.
<?xml version="1.0" encoding="utf-8"?>
<SignData>
   <Data>...</Data>
</SignData>



в котором поле Data объявлено, как
Код: html
1.
2.
Тип               Описание
Base64binary      Данные вложения (текст, pdf, html,xml) в формате base64binary



У меня обычный текст. В конечном счете этой пойдет в веб-сервис. Прокси base64binary отобразил в TByteDynArray .
Как правильно TByteDynArray присвоить значению узла XML-документа?
...
Рейтинг: 0 / 0
Поместить строку как base64binary в xml-документ
    #39510584
Cobalt747
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ktv,

А в каком виде ожидает принимающая программа?
...
Рейтинг: 0 / 0
Поместить строку как base64binary в xml-документ
    #39510593
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ktv,

А не проще TByteDynArray запихать в строку в виде base64 и поместить в XML?
...
Рейтинг: 0 / 0
Поместить строку как base64binary в xml-документ
    #39510604
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А можно как-нибудь попонятнее объяснить эту фразу?
ktvПрокси base64binary отобразил в TByteDynArray .
...
Рейтинг: 0 / 0
Поместить строку как base64binary в xml-документ
    #39510610
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvpА можно как-нибудь попонятнее объяснить эту фразу?
ktvПрокси base64binary отобразил в TByteDynArray .


Та строка там в base64 формате скорее всего - это ж web.
...
Рейтинг: 0 / 0
Поместить строку как base64binary в xml-документ
    #39510618
ktv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMasterktv,
А не проще TByteDynArray запихать в строку в виде base64 и поместить в XML?
каким образом? Типа
Код: pascal
1.
 EncodeBase64(dinArray, length(dynArray));



Cobalt747 , пока не знаю, саппорт их недоступен, мне бы пока уверенность в том, что я правильно понял их :)

alekcvp, это значит, что в описании сервиса в документации для этого поля указан тип base64binary , а в коде он у меня идет как TByteDynArray.

Суть в общем такая. Есть прокси тип, скажем TObject , который передается методу веб-сервиса.
Так вот, его поле TObject.Value имеет тип base64binary (TByteDynArray). Именно в это поле надо поместить тот, изначальный, xml-документ, внутри которого в поле Data надо поместить данные в формате base64binary.

То есть, как я понимаю, надо сформировать в Делфи xml-документ. В его поле Data засунуть "текстовый файл", а на самом деле у меня тут просто строка, которую, видимо, надо упаковать в TByteDynArray (base64binary) и как-то в это поле xmlDoc.Data поместить. И потом уже весь документ Xml надо снова упаковать в общий TByteDynArray(base64binary) и присвоить получившееся TObject.Value.
Так вот, мне интересно, как все это технически осуществить правильно.
1. Строку пакуем в base64binary (то есть, возможно, в TByteDynArray).
2. Результат 1. присваиваем xmlDoc.Data
3. xmlDoc пакуем в base64binary
4. Результат 3. присваиваем TObject.Value, которое имеет тип TByteDynArray.
...
Рейтинг: 0 / 0
Поместить строку как base64binary в xml-документ
    #39510634
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMasteralekcvpА можно как-нибудь попонятнее объяснить эту фразу?
пропущено...

Та строка там в base64 формате скорее всего - это ж web.
Это понятно. Я не понял как ТС из обычного текста при помощи base64 получил T Byte DynArray.
...
Рейтинг: 0 / 0
Поместить строку как base64binary в xml-документ
    #39510638
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ktvСуть в общем такая. Есть прокси тип, скажем TObject , который передается методу веб-сервиса.
Так вот, его поле TObject.Value имеет тип base64binary (TByteDynArray). Именно в это поле надо поместить тот, изначальный, xml-документ, внутри которого в поле Data надо поместить данные в формате base64binary.


Ну если я правильно понял, то вам надо ваш текст преобразовать в base64-строк, эту строку засунуть между тегами <data>, после чего весь полученный xml-документ ещё раз преобразовать в base64-строку и уже эту строку скопировать в TObject.Value (например при помощи Move()).
Единственное, что мне до сих пор непонятно - это почему свойство base64binary имеет двоичный формат, а не строковый. У меня есть только два предположения:

1. Прокси-тип сам кодирует этот "TByteDynArray" в base64, тогда это где-то должно быть описано и вы что-то не так поняли. В этом случае повторное кодирование в base64 не нужно.
2. Это косяк в архитектуре прокси-типа, вместо AnsiString там прописали TByteDynArray, что в результате требует лишних телодвижений для присвоения значения.
...
Рейтинг: 0 / 0
Поместить строку как base64binary в xml-документ
    #39511825
ktv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Закрыт вопрос. Нужно было запихнуть base64binary (string значение поля xml) внутрь другого base64binary (TByteDynArray).
Внутреннее кодируется этим:
Код: pascal
1.
TNetEncoding.Base64.Encode('данные приложения');



Второе этим:
Код: pascal
1.
TByteDynArray(TEncoding.UTF8.GetBytes(CreateData('xml-документ как текст')))


То есть, прокси сам кодировал в base64 байтовый массив, сформированный нами, проблема была в том, что я использовал функцию конвертации строки в TByteDynArray, взятую где-то в сети. Она оказалась глючной. Такой способ конвертирования, приведенный выше, проблему решил.
...
Рейтинг: 0 / 0
Поместить строку как base64binary в xml-документ
    #39511826
ktv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
+ спасибо за участие всем )
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Поместить строку как base64binary в xml-документ
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]