我正在为 MySQL 编写一个 Web 界面,它执行几个查询并返回一些带有查询结果的 XML 数据。现在,运行查询的表有三个 LONGBLOB 列(用于存储图像数据等)。
但是,当我尝试解析 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 类型、语言和实用程序作为给定的。)基本上我想要做的是找到一种方法来提供图像回来与其他一些混合类型数据(主要是字符串)相同的 XML 文档中的请求应用程序。
编辑:我正在使用mysql --xml
命令行程序和 PHPpassthru
函数的组合从 MySQL 中获取 XML。这是在我开发它时完成我想要的最简单的方法;有没有更好的办法?我应该从 MySQL 字段中用 PHP 构建 XML,而不是依赖 MySQL 为我做这件事吗?如果是这样,那会更容易以 XML 格式发送图像数据吗?