【问题标题】:How to best save XML files如何最好地保存 XML 文件
【发布时间】:2009-11-24 01:32:02
【问题描述】:

我有一堆类,每个类都使用 TinyXML 从 XML 文件中读取它们的值。

我已经这样做了,所以一切都在内存中,我的用户正在使用该应用程序并进行更改。如果用户按下保存,我需要遍历我的对象并调用写出 XML 文件的 Save() 函数。我应该从头开始以编程方式重建 XML 文件并将其写出来吗?或者我应该使用与读取文件相同的TiXmlHandle,修改它然后将其写回?这样,原始顺序保持不变。如果我重新创建 XML,那么原始的顺序将会改变。

我希望用户能够手动修改 XML,所以我认为他们手动更改它会很奇怪,只是在保存时重新洗牌。我是否正确理解了我的选择?

以前从未使用过 TinyXML,也没有使用过 XML。

【问题讨论】:

    标签: c++ xml language-agnostic tinyxml


    【解决方案1】:

    一旦您读取了 XML 输入,我将处理读取句柄。

    要将它们写回,您通常会在父或主文档类型对象中使用 writeXML() 方法,然后在设计中的每个对象中调用 writeXML() 方法。

    ps。拥有不同的 XML 读写库并不罕见。
    pps。如果您担心无法从对象层次结构强制执行的 XMl 文档中的顺序 - 您的基本设计有一些错误。

    【讨论】:

      【解决方案2】:

      这第一部分不是对您问题的直接回答,但我将继续您的句子“我以前从未使用过 XML”。由于当今 XML 在计算中的流行,花一些时间来了解 XML 的工作原理是值得的。对于直接参考,我推荐 Harold 和 Means 的“XML in a Nutshell”。它解释了 XML、模式(准确定义传入的 XML 必须是什么样子)、XPath(如何导航节点以获取所需的数据)、XQuery、XSLT、命名空间等。

      真正对您有所帮助的是概念,为此您可能需要另一本书(抱歉,我没有可推荐的书。)了解为什么应该以正确的方式使用 XML 很重要,并且不仅仅是将其视为一个美化的 .INI 文件。为什么 DOM 概念很流行。您是否应该使用 SAX。

      可能最相关的学习内容是 XML 模式 (XSD)。虽然有时看起来有点矫枉过正,但您应该强烈考虑根据其架构验证您的 XML(这是对完整 XML 解析器(如 xerces)的单一方法调用。)请记住,这是 2009 年,您的程序在一台计算机上运行大量的内存,它可以非常非常快地完成大部分工作;所以知道你的数据是好的是完全值得的。一旦你理解了模式,我建议你学习如何对它们进行版本控制。这在处理程序存储时尤其重要,因为这样您就可以让您的程序了解已保存文件的早期版本并自动使用或升级它们。

      要更直接地回答您的直接问题,请使用 TinyXML(或您选择的任何解析器)进行编写。当您已经拥有工具时,不要重新发明输出轮。

      【讨论】:

        猜你喜欢
        • 2013-06-24
        • 1970-01-01
        • 2010-10-12
        • 2017-08-04
        • 2020-08-15
        • 1970-01-01
        • 2013-06-27
        • 2023-03-05
        • 1970-01-01
        相关资源
        最近更新 更多