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

发布于 2024-07-27 19:09:53 字数 213 浏览 5 评论 0原文

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

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

有人可以建议一种对流进行编码的方法吗?

I am working with QuantumGrid 6 from Devexpress. I need to store the grids settings in an xml configuration file. Unfortunately, the grid does not allow XML as a storage option. I can however export the settings to a stream.

I'm thinking to export to a stream then convert the stream to text and store it as an xml value. I guess the text must only contain printable characters and it would be nice if it was compressed in some way.

Can somebody suggest a method of encoding the stream?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

桃酥萝莉 2024-08-03 19:09:53

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

Use standard IdEncoderMIME / IdDecoderMime from the Indy Misc palette. You have some methods for encoding streams.

清醇 2024-08-03 19:09:53

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

SimpleStorage Download

它是为了解决像您这样的问题而设计的。 要执行您想要的操作,您需要一行代码:

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

它不仅自动对数据,但它也支持过滤器,因此您可以即时进行 gzip。

因此,只需三行代码即可完成这一切:


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

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

You can use SimpleStorage, a XML storage based framework I created. You can download it from here.

SimpleStorage Download

It was made to solve problems like yours. To do what you want you need a single line of code:

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

Not only it automatically base64 encodes the data but it also supports filter so you can gzip on the fly.

So with three lines of code you can do it all:


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

It uses OmniXML a very good delphi XML library. You can find all info on the download page.

小鸟爱天空丶 2024-08-03 19:09:53

我已经使用 DIMimeStreams 完成了此操作,编码为 tStringStream,然后将stream.datastring放置为特定元素的文本部分。 如果您想添加加密,那么我将添加 LockBox 中找到的例程来预先加密流到 MIME 步骤。 为 2009 年编译的 LockBox 最新版本可在 songbeamer 网站上获取。 您还可以使用几乎任何压缩例程来压缩为流,然后运行 ​​mime 步骤。

I have done this using DIMimeStreams, encoding to a tStringStream, then placing the stream.datastring as the text portion of a specific element. If you want to add encryption, then I would add the routines found in LockBox to encrypt the stream prior to the MIME step. The latest version of LockBox, compiled for 2009 is available on the songbeamer website. You can also compress using just about any compression routine which compresses to a stream, and then run through the mime step.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文