2011-06-17 155 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庫,並且有很好的結果。