我在内存中有一些较大的(几KB,可能是1 MB)字符串,它们包含结构化文本,如下例所示:
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 :(得分:0)
它实际上是一棵树,在第一层你有树子元素的根:def,def和subdef。
将您的结构转换为树,然后查询您可以使用任何算法(甚至是XPath)