Java: использование Castor XML с изображениями - PullRequest
1 голос
/ 07 марта 2009

как я могу использовать Castor XML для маршалинга объекта java.awt.Image в XML или для того, чтобы XML каким-то образом ссылался на изображение.

Приветствия
Пит

Ответы [ 4 ]

1 голос
/ 07 марта 2009

Полагаю, вы могли бы написать свой собственный обработчик поля . Я бы написал само изображение в определенном месте и сослаться на изображение из XML.

0 голосов
/ 22 мая 2009

Вы можете, конечно, base64 кодировать GIF / JPG / независимо от того, обернуть его в или любой другой тег. Как предположил Ян, вы можете использовать для этого собственный FieldHandler (чего я не делал в Castor по крайней мере пять лет).

Настоящий вопрос заключается в следующем: какова ваша цель? Вы пытаетесь разработать схему взаимодействия, которая может передавать данные изображения вместе с «нормальной» информацией? Вы пытаетесь сохранить ваши данные в виде XML в ваших собственных системах? Если вы пытаетесь сделать взаимодействие, я бы пошел по маршруту Base64 для простоты. Практически любой язык с синтаксическим анализатором XML также будет иметь пакет Base64, поэтому он не станет чрезмерным бременем для другой стороны.

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

0 голосов
/ 07 марта 2009

Это полностью зависит от того, что будет использовать XML. Как сказал jjungnickel, самый простой способ сделать это - записать изображение в файл, а затем сослаться на этот файл в XML. Вы можете сделать это:

  • Поместить имя файла (относительное или абсолютное) в XML
  • Поместите ссылку на сущность XML в XML, которая может работать или не работать в зависимости от того, как кодируется изображение

Изображения - двоичный контент - могут входить в XML, но это требует более специальной обработки. Гораздо проще поместить имя файла в XML, а затем открыть этот файл отдельно, но это зависит от потребностей потребителя XML.

Теперь, если вы хотите использовать Castor для этого, намного проще сериализовать имя файла, а не само изображение. Если вы хотите поместить само изображение в XML, вам нужно написать собственный обработчик полей. Когда я использовал Castor для XML с изображениями, я всегда помещал имя файла в XML, а не само изображение, а затем потребитель XML считывал имя файла и использовал его для сериализации изображения.

0 голосов
/ 07 марта 2009

Я не знаю, можете ли вы сохранить изображение напрямую. Вы можете попытаться получить растр и сохранить каждый пиксель.

...