1

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

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

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

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

4

2 回答 2

1

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

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

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

于 2009-11-24T02:44:22.307 回答
1

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

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

Probably the most relevant things to learn are XML schemas (XSDs). While it sometimes seems like overkill, you should strongly consider validating your XML against its schema (which is a one-method-call to a full XML parser such as xerces.) Remember, this is 2009, your program is running on a computer with a lot of memory, and it can do most of that stuff really, really fast; so it's totally worth it to know your data is good. And once you understand schemas, I'd recommend learning how to version them. That's especially important when dealing with program storage, because you can then make your programs understand previous versions of saved files and use or upgrade them automatically.

To more directly answer your immediate question, use TinyXML (or whatever parser you choose) for writing. Don't reinvent the output wheel when you already have the tool in hand.

于 2009-11-24T03:27:01.020 回答