如何对流进行编码以便将其存储在xml文件中?

时间:2009-07-18 10:11:42

标签: xml delphi encoding delphi-2009 devexpress

我正在使用Devexpress的QuantumGrid 6。我需要将网格设置存储在xml配置文件中。不幸的是,网格不允许XML作为存储选项。但我可以将设置导出到流中。

我正在考虑导出到流然后将流转换为文本并将其存储为xml值。我想文本必须只包含可打印的字符,如果以某种方式压缩它会很好。

有人可以提出一种编码流的方法吗?

3 个答案:

答案 0 :(得分:3)

使用Indy Misc调色板中的标准IdEncoderMIME / IdDecoderMime。你有一些编码流的方法。

答案 1 :(得分:3)

您可以使用SimpleStorage,这是我创建的基于XML存储的框架。你可以在这里下载。

SimpleStorage Download

这是为了解决像你这样的问题。要做你想做的事,你需要一行代码:

SrcStorage.Ensure('Data').Filter('gzip').AsBinary.LoadFromStream(MemoryStream);

它不仅可以自动base64对数据进行编码,而且还支持过滤,因此您可以随时进行gzip。

因此,使用三行代码可以完成所有操作:

SrcStorage := CreateStorage('BinaryStorage'); SrcStorage.Ensure('Data').Filter('gzip').AsBinary.LoadFromStream(MemoryStream); SrcStorage.SaveToFile('Data.xml');

它使用OmniXML一个非常好的delphi XML库。您可以在下载页面上找到所有信息。

答案 2 :(得分:0)

我使用DIMimeStreams完成此操作,编码为tStringStream,然后将stream.datastring作为特定元素的文本部分。如果要添加加密,那么我将添加LockBox中找到的例程,以便在MIME步骤之前加密流。可以在songbeamer网站上找到2009年编译的最新版LockBox。您也可以使用几乎任何压缩到流的压缩例程进行压缩,然后运行mime步骤。