【问题标题】:Managing hierarchical data in C/C++在 C/C++ 中管理分层数据
【发布时间】:2011-06-17 21:32:04
【问题描述】:

目前我正在研究用 C/C++ 管理分层数据(来自 XML)。我需要解析 XML 文件并将它们有效地存储在数据库中,所以我以后应该能够查询数据库。欢迎对此提出任何建议。

我遇到了Managing Hierarchical Data in MySQL。 这看起来不错,但仍然想知道是否有其他方法可以做到这一点。

【问题讨论】:

  • 您是否考虑过使用现有的 C++ XML 解析器,例如 Xerces?
  • 嗨,Billy,Xerces 是否提供任何 MYSQL 特定功能?我正在寻找一种 API,它还可以帮助我在数据库中存储、检索和管理数据。谢谢
  • @user803969:不,但是 MySQL 提供了一个 API,而 Xerces 提供了一个 API……您不需要自己构建分层表示。综上所述,请注意——SQL 讨厌分层数据。
  • 不确定我理解。你能给我一些链接,让我更好地理解它。如何同时使用这两个 API 来消除数据的分层表示。
  • @ddama:通过编写程序。 Xerces 为您提供 XML 的编程表示。 MySQL 为您提供了一种运行 SQL 查询的方法。你将不得不写胶水。

标签: c++ c xml database data-structures


【解决方案1】:

如果您仔细阅读该文档,您会发现存储分层数据的方式有两种,一种使用“parent_ID”,另一种使用“left_sibling_ID”和“right_sibling_ID”。

我建议使用第一个:

myxmltable = {myxmltable_ID, myxmltable_parent_ID, myxmltable_otherfield_1, ...}

此外,您可以使用 > 0 的键存储所有项目。根项目的父键可以是 0,这意味着它没有父项。我建议避免使用 NULL,以便更容易处理您的 DB。并使用 0 代替。

【讨论】:

  • 感谢您对此的看法。我很感激。
  • 是否有现有的 API 可以执行这些操作,还是我必须自己编写一个?
  • 我忽略了 C/C++ 中有一个特殊的库 / API 可以从 XML 文件存储到特定的 DB 中。 S.Q.L.服务器,但是,您可能想查看常见的 C/C++ 库,如 Boost
【解决方案2】:

XML 存储不适合 SQL 的关系方法的分层数据。我强烈建议您查看 XPath/XQuery,它们是直接在 XML 上运行的查询语言。 Qt 包含一个 XQuery 库,我使用它并取得了不错的效果。

【讨论】:

    猜你喜欢
    • 2012-01-31
    • 1970-01-01
    • 2016-07-14
    • 1970-01-01
    • 2013-11-27
    • 2018-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多