Двоичный контент Base64 XML

Мне нужно отправить двоичные данные в формате XML, и стандартный способ сделать это — использовать base64; однако у меня есть два варианта:

  • сохранить двоичный файл в xs:base64binary
  • сохранить закодированное в utf-8 строковое представление двоичного файла base64 в элемент xs:string

В первом случае схема гласит:

 <xs:element name="Image" type="xs:base64Binary" />

Во втором случае схема гласит:

 <xs:element name="Image" type="xs:string" />

Я подозреваю, что первый вариант более «правильный», однако он генерирует XML, который больше, чем второй вариант. Первый элемент экземпляра XML начинается с «U1Vrc...» и т. д., второй — с «SUkqAAA..» и т. д.

Какой из них будет наиболее обычным увидеть там?


person Otávio Décio    schedule 08.11.2009    source источник
comment
По моему опыту, большинство людей не используют XML для отправки двоичных файлов. Но если вам нужно, используйте типы данных base64Binary или hexBinary.   -  person james.garriss    schedule 16.03.2016


Ответы (1)


Наилучший вариант — вообще не хранить двоичные данные в XML, отправлять их отдельно, а XML ссылаться на внешние данные по мере необходимости. Но если вам нужно хранить его непосредственно в XML, то base64Binary и hexBinary — единственные встроенные типы данных для двоичных данных, но они, конечно, не единственный выбор. Существуют и другие доступные алгоритмы, которые также кодируют данные с использованием буквенно-цифровых алфавитов, совместимых со строками XML. Поищите или разработайте свой собственный синтаксис, который кодирует только те двоичные байты, которые ограничены XML, и оставляет остальные незакодированными.

person Remy Lebeau    schedule 10.11.2009
comment
Я понимаю варианты, но я пытаюсь выяснить, есть ли принятый или более широко используемый вариант, поскольку он будет предоставлен третьим сторонам для отправки нам двоичных данных. - person Otávio Décio; 10.11.2009
comment
Тогда вы в основном застряли с base64, так как это самый компактный и стандартный формат, который изначально поддерживает XML. - person Remy Lebeau; 11.11.2009