Я пишу веб-интерфейс для MySQL, который выполняет пару запросов и возвращает некоторые XML-данные с результатами запросов. Сейчас таблица, в которой выполняется запрос, имеет три столбца LONGBLOB (для хранения данных изображения и т.п.).MySQL 5.0: вывод данных BLOB в (правильно сформированном) формате XML?
Однако, когда я пытаюсь разобрать XML, у меня возникают проблемы с определенными символами в столбцах BLOB: похоже, что MySQL просто сбрасывает прямые шестнадцатеричные данные в поток, что не принимается моим парсером.
Есть ли способ, которым MySQL может иметь хорошо сформированный XML, содержащий шестнадцатеричные данные? Я посмотрел опцию mysqldump --hex-blob
, но я работаю с программой mysql
, так как мне нужно запускать запросы по таблицам, а не просто получать содержимое всей таблицы. Я был бы в порядке со строковым представлением, элементом xs:hexBinary
в теге <field>
или что-то в этом роде.
Редактировать: Я работаю в PHP 5.2.9. Основой вопроса является предоставление своего рода Digg-подобного API с несколькими доступными для HTTP конечными точками, например. /objects
, /edit
и т. Д. Идея состоит в том, что несколько клиентских приложений на нескольких платформах могут использовать API в качестве общей основы для доступа к одному набору данных, не заботясь о поддержке базы данных (которая может быть изменена).
Один из типов объектов, которые я храню, представляет собой (небольшое) изображение, и я хотел бы сделать это непосредственно в базе данных с использованием типа MySQL LONGBLOB. (Я отвечаю только за то, что API работает с базой данных MySQL, поэтому ответы могут принимать тип, язык и утилиты DB как givens.) В основном я ищу, чтобы найти способ вернуть изображение назад к запрашивающему приложению в том же XML-документе, что и некоторые другие данные смешанного типа (в основном строки).
Edit: Я получаю XML из MySQL, используя комбинацию программы mysql --xml
командной строки и функции PHP passthru
. Это был самый простой способ сделать то, что я хотел, в то время, когда я его разрабатывал; Есть ли способ лучше? Должен ли я строить XML в PHP из полей MySQL, а не в зависимости от MySQL, чтобы сделать это для меня? И если это так, облегчит ли отправку данных изображения в XML?
из вашего описания, у меня сложилось впечатление, что вы получаете XML непосредственно с MySQL, а не получать поля из XML и создание XML в PHP. Это так? Можете ли вы предоставить какой-нибудь псевдокод или что-то еще, а может быть, образец XML, который вызывает проблему? Вы считаете, что вы храните файлы на диске и сохраняете только их имена в БД, правильно? Основная идея такая же, как только вы получите данные изображения. –