【问题标题】:Faster approach to replace part of XML file: XMLDocument or TextStream?替换部分 XML 文件的更快方法:XMLDocument 还是 TextStream?
【发布时间】:2013-03-30 09:22:08
【问题描述】:

我在 VB6 中有一个应用程序,可以将销售信息存储到数据库中。当用户输入数据时,我想将其存储到本地 XML 文件中,以避免由于网络故障等而丢失数据。因此,当输入每个项目行时,该行将附加到 XML 文件中。

我正在考虑将新的行数据附加到文件中,这样它就不必读取任何现有数据。但由于 XML 需要结束标记,这似乎不起作用。

所以我想我必须阅读文件,删除最后一个标签,并用结束标签附加其余数据。这会是正确的方法吗?在性能方面最好的方法是什么?使用 XMLDocument 还是 TextStream?

【问题讨论】:

  • 这听起来太复杂了。已经考虑过管理数据(更不用说 ACID)方面的东西了吗?例如,本地 SQLite 数据库 ..
  • 我一次只存储一个条目,其中可能包含最多 100 行项目。一旦将其保存到数据库中,它就会被删除。这是个坏主意吗?请建议。我实际上不想为此安装任何本地数据库
  • 好吧,如果有人向我提出建议,我会(或应该)做的第一件事是go look it up。然后我就可以自己看看他们的建议对我的场景是否有效(或无效)。
  • 好吧抱歉我的误解其实我的问题是你为什么认为 xml 存储太复杂了?是读取文件还是frequet写入文件被击中? (顺便说一句,我现在正在阅读 sqllite)
  • 另一种方法可能是不创建有效的 XML 文件,而是创建 XML fragments 的日志/列表文件(限制记录只能是 添加到它的末尾)。也就是说,不要创建根元素,而是将每条记录添加为它自己的顶级元素。那么不必处理结束标签(每个片段所需的结束标签之外)就没有问题了。

标签: xml vb6 filestream


【解决方案1】:

因为这是在一个“会话”中完成的,所以只需将 XMLDocument 对象保留在内存中,将新节点附加到它并在每次添加一行时保存文件。
如果您需要恢复会话,只需将 XML 加载到同一对象中,然后像以前一样继续。

这将保存完整加载、解析、每次保存或尝试的字符串解析。

【讨论】:

  • 但我需要在会话之外保留它。即使软件被关闭,我也需要数据是可恢复的。我还在研究上述评论中建议的使用 sqlite DB 的选项。这似乎是一个选择。但在驱动程序安装中遇到一些问题。非常感谢你
  • @user1616785:然后在重新启动会话时将 XML 文件加载回同一对象。然后,您可以将节点附加到此末尾并像以前一样保存。
猜你喜欢
  • 1970-01-01
  • 2010-10-29
  • 2021-09-18
  • 2014-02-05
  • 1970-01-01
  • 2022-07-27
  • 2015-03-19
  • 1970-01-01
  • 2022-01-15
相关资源
最近更新 更多