Недавно нам поручили разработать спецификацию связи XML для наших продуктов. Некоторые из моих коллег высоко оценивают JAXB для сортировки и десортировки XML-документов. Я провел некоторое время, играя с этим, и я понимаю, откуда они берутся. Это упрощает жизнь простым XML-документам.
Теперь, чтобы поднять его на ступеньку выше. Одна из вещей, которую я хотел бы видеть в нашей коммуникационной модели «встроенной» проверки подписи для людей, которые используют ее после меня. Одна из проблем, с которой я сталкиваюсь, заключается в том, что для проверки подписи мне нужно обрабатывать соответствующий XML как байты. Итак, давайте возьмем этот пример...
<topLevel>
<sensitiveData encoding="UTF8">
<creditCard>
<number>1234-1234-1234-1234</number>
<expDate>Oct 2020</expDate>
</creditCard>
</sensitiveData>
<signatureOfSensitiveData algorithm="SHA1WithRSA">VGhpc0lzQVNpZ25hdHVyZQ==</signatureOfSensitiveData>
</topLevel>
Редактировать :На самом деле я не передаю данные кредитной карты. Просто пример здесь.
Было бы здорово, если бы я мог получитьbyte[]
(определяется кодировкой )представления всего, что находится внутри тега «sensiveData». Я бы даже не возражал против того, чтобы снова назвать unmarshall по этому поводу byte[]
.
Это открывает перед нами и другие двери. На самом деле мы могли бы ввести в элементы атрибуты «сжатие» и «шифрование». Если бы мы могли обращаться с ними как с byte[]
, мы могли бы затем раздуть и расшифровать их, а затем передать их для повторной рассортировки.
Примечание :Я думаю, что это работает, если вы кодируете XML в base64, а затем включаете его в элемент. Но это вынуждает нас использовать base64 даже для простых документов и вводить в наши сообщения лишнее раздувание.
Любые идеи для решения этой проблемы? Я надеюсь, что мне просто не хватает чего-то базового в JAXB, и после того, как я это получу, это будет легко.
Спасибо!