後でそのデータにアクセスしたい 5 MB の XML フラット構造があります。Java で XOM パーサーを使用して XML を解析していますが、ファイル サイズのために時間がかかるため、データを取得するたびにツリー全体をループしたくありません。
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 = SOMETTUFF AND Type = OtherStuff の場合、ノードの longDes を取得したいと考えています。
全体をループして、他の属性が満たされている場合に longDes を取得すると、非常にコストがかかります。
O(n) ではなく O(1) でデータにアクセスできるようにデータを保存して、XML 全体を 1 回ループし、後で反復するためにデータ構造にアクセスするにはどうすればよいですか。