2011-06-17 158 views
-1

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

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

+0

您是否考虑过使用现有的C++ XML解析器,如Xerces? –

+0

嗨比利, Xerces是否提供任何MYSQL的特定功能?我正在寻找一种API,它还可以帮助我存储,检索和管理数据库中的数据。 谢谢 – keeda

+0

@ user803969:不,但MySQL提供了一个API,而Xerces提供了一个API ......您不需要自己构建分层表示。这一切都说,被警告 - SQL HATES分层数据。 –

回答

0

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

我建议使用第一个:

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

此外,你可以你所有的物品,存储与键> 0,父键对于根项目可以是0,也就是说,它没有父项。我建议避免使用NULL,以便更容易处理您的D.B。并使用0代替。

+0

感谢您对此的看法。我很感激。 – keeda

+0

是否有一个现有的API来执行这些操作,还是我必须自己写一个? – keeda

+0

我忽略f在C/C++中有一个特殊的库/ API将XML文件存储到特定的D.B中。 S.Q.L.服务器,但是,您可能需要查看常见的C/C++库,如Boost – umlcat

0

XML存储的分层数据不符合SQL的关系方法。我强烈建议你看看XPath/XQuery,它们是直接在XML上操作的查询语言。 Qt包含一个我使用过的XQuery库,并且有很好的结果。