2011-06-17 22 views
-1

現在、私はC/C++で階層データ(XMLから)を管理する方法を研究しています。 XMLファイルを解析してDBに格納する必要があるので、後でDBに問い合わせることができます。これに関する提案は大歓迎です。C/C++で階層データを管理する

私はManaging Hierarchical Data in MySQLに遭遇しました。 これはうまく見えますが、それを行う他の方法があるかどうか不思議です。

+0

Xercesなどの既存のC++ XMLパーサーを使用することを検討しましたか? –

+0

こんにちはBilly、 XercesはMYSQL特有の機能を提供していますか?私は、データベースのデータの格納、検索、および管理に役立つAPIも探しています。 ありがとう – keeda

+0

@ user803969:いいえ、MySQLはAPIを提供していますが、XercesはAPIを提供しています...自分で階層表現を作成する必要はありません。 SQLは階層的なデータを嫌う。 –

答えて

0

このドキュメントをよく読んだ場合、階層データが格納されている2つの方法があります.1つは「parent_ID」を使用し、もう1つは「left_sibling_ID」&「right_sibling_ID」を使用します。

私は最初のものを使用することをお勧め:

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

また、あなたは> 0の親キーのキーで、すべてのアイテムを保存することができルート項目は0である可能性があります。つまり、親はありません。あなたのD.B.をより扱いやすくするために、NULLを使わないでください。代わりに0を使用します。

+0

あなたの考えをありがとう。それは有り難いです。 – keeda

+0

これらの操作を行う既存のAPIはありますか、それとも独自のAPIを作成する必要がありますか? – keeda

+0

私は無視します。XMLファイルから特定のD.Bに格納するC/C++の特別なlibary/APIがあります。 S.Q.L.サーバではありませんが、Boostのような一般的なC/C++ライブラリ – umlcat

0

XMLには、階層的なデータが格納されていますが、これはSQLのリレーショナルアプローチには適していません。 XMLで直接動作するクエリ言語であるXPath/XQueryを見てみることを強くお勧めします。 Qtには良い結果を得たXQueryライブラリが含まれています。