2017-02-15 54 views
0

我有些稍大(幾KB,也許1 MB max)存儲在存儲器中的字符串,它們包含結構像下面的示例文本:允許在結構化文本中快速訪問子字符串的數據結構?

Def[prop=A, ... some more kv pairs] 
    SubDef[prop=B, ... some more kv pairs] 
    SubSubDef[prop=C, ... some more kv pairs] 
    ... goes deeper ... 
Def[prop=X, ... some more kv pairs] 
    SubDef[prop=Y, ... some more kv pairs] 
    SubSubDef[prop=Z, ... some more kv pairs] 
    ... goes deeper ... 
SubDef[prop=Y, ... some more kv pairs] <- yeah, SubDef can also be on level 1 
    SubSubDef[prop=Z, ... some more kv pairs] 

我需要從文件中讀取這些字符串,然後「查詢」他們的數據。例如,查詢將是:Def[].SubDef[].prop[]這將意味着給我所有prop裏面的所有SubDef這是在Def內。

我的想法是當我閱讀文件結構時,我可以以某種方式索引表示結構的關鍵字。就像我可以保留所有Def字符串的位置數組,所有SubDef和所有SubSubDef,所以當我需要搜索SubDef屬性時,我可以跳轉到整個字符串中這些關鍵字的偏移量。

我想知道是否有一些通用的數據結構?基本上它是某種圖形?不是一棵樹,因爲SubDef也可以在第1級。

爲了澄清,該字符串中有很多關鍵字,但我只關心它們的一個子集。

是否有任何通用數據結構來表示結構化字符串中的關鍵字偏移量?

回答

0

它實際上是一棵樹,在第一層,你有樹的子元素的根:def,def和subdef。

轉換您的結構樹,然後查詢你可以使用任何算法(甚至XPath的)

+0

我有時間重新審視這個問題,是的,我同意,這是有道理的,以它建模爲一棵樹。此外,我將跟蹤列表中的樹級別,以便我可以快速訪問N級的所有節點。感謝您的建議。 – Max