gpt4 book ai didi

c++ - 在 C++ 中存储 XML 树的最有效数据结构

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:17:13 25 4
gpt4 key购买 nike

我正在用 C++ 处理 XML,我想知道存储 XML 数据的最佳数据结构是什么。请不要只告诉我你过去听说过的事情;我想知道最有效的结构是什么。我希望能够以最少的内存开销和查找时间存储任意 XML 树(假设它是有效的)。

我最初的想法是哈希,但我想不出如何处理同一标签的多个子标签,以及如何处理属性。

Qt 解决方案是可以接受的,但我更关心整体结构而不是特定的库。感谢您的输入。

最佳答案

最有效的结构是一组派生自 DTD 或定义您打算处理的特定 XML 实例的架构的类。 (您肯定不会处理任意 XML 吗?)标记由类表示。独生子女可以用字段来表示。具有 min...max arity 的子代可以由包含数组的字段表示。具有不定元数的 child 可以用动态分配的数组表示。属性和子项可以存储为字段,通常具有推断的数据类型(如果属性表示数字,为什么将其存储为字符串?)。使用这种方法,您通常可以使用 native C++ 访问路径导航到 XML 文档中的特定位置,例如,root->tag1.itemlist[1]->description.

所有这些都可以从架构或 DTD 中自动生成。有工具可以做到这一点。 Altova提供一些。我对此没有具体经验(尽管我已经为 Java 和 COBOL 构建了类似的工具)。

关于c++ - 在 C++ 中存储 XML 树的最有效数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5691384/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com