2009-11-24 46 views
1

我有一堆类都使用TinyXML从XML文件中读取它们的值。如何最好地保存XML文件

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

我希望用户能够手动修改XML,所以我认为这会让他们手动更改它,但只有在保存时才重新洗刷。我是否正确理解我的选择?

以前从未使用过TinyXML,或者就此而言,使用XML。

回答

1

一旦你阅读了XML输入,我会处理阅读句柄。

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

ps。拥有不同的XML读取和写入库是很平常的。
pps。如果您担心XMl文档中的命令无法从对象层次结构中强制执行,那么您的某些fundemantal设计就会出错。

1

这第一部分不是直接回答你的问题,而是我要说的是“我以前从未使用过XML”。由于现代计算中XML的普及,值得花一些时间来了解XML如何工作。对于直接参考,我推荐Harold和Means的“简洁的XML”。它解释了XML,模式(它确切地定义了传入的XML必须看起来像什么),XPath(如何导航节点以获得所需的数据),XQuery,XSLT,命名空间等。

什么是真的要帮助你是概念,为此你可能需要一本不同的书(对不起,我没有推荐的书)。重要的是要知道为什么你应该正确地使用XML,而不仅仅是将它想象成一个荣耀的.INI文件。为什么DOM概念很流行。是否应该使用SAX。

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

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