我有一个 5 MB XML 平面结构,我想稍后访问它的数据。我在 Java 中使用 XOM Parser 来解析 XML,并且我不想每次要检索数据时都在整个 Tree 上循环,因为文件大小需要一段时间。
XML 看起来像这样
<TypeDesc Type="Person" Id="1" PKey="X0" xml:lang="EN" ShDes="t1" LongDes="test 1"/>
<TypeDesc Type="Person" Id="2" PKey="X1" xml:lang="EN" ShDes="t2" LongDes="test 2"/>
<TypeDesc Type="Person" Id="3" PKey="X3" xml:lang="EN" ShDes="t3" LongDes="test 2"/>
...
<TypeDesc Type="Person" Id="n" PKey="PAYMN" xml:lang="EN" ShDes="PAYMN" LongDes="payment"/>
<TypeDesc Type="Student" Id="1" PKey="X0" xml:lang="EN" ShDes="t1" LongDes="good"/>
<TypeDesc Type="Student" Id="2" PKey="X1" xml:lang="EN" ShDes="t2" LongDes="bad"/>
<TypeDesc Type="Student" Id="3" PKey="X3" xml:lang="EN" ShDes="t3" LongDes="fair"/>
...
<TypeDesc Type="Student" Id="n" PKey="PAYMN" xml:lang="EN" ShDes="PAYMN" LongDes="fair"/>
在我的逻辑中,如果 PKEY = SOMESTUFF AND Type = OtherStuff,我想检索节点的 longDes
如果满足其他属性,则循环整个事物并检索 longDes 是非常昂贵的。
如何存储我的数据,以便我可以在 O(1) 而不是 O(n) 中访问它们,以便我在整个 XML 上循环一次并访问数据结构以供以后迭代。