У меня есть плоская структура XML объемом 5 МБ, которую я хочу получить позже. Я использую XOM Parser в Java для синтаксического анализа XML, и я не хочу, чтобы цикл на все дерево каждый раз, когда я хочу получить данные, поскольку требуется время из-за размера файла.Структура данных Java для хранения плоских данных 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"/>
В моей LOGIC я хочу, чтобы извлечь longDes из узлов, если PKEY = SOMESTUFF И Type = OtherStuff
зацикливание на все это и получение, если longDes другие атрибуты удовлетворяются очень дорого.
Как сохранить мои данные, чтобы я мог получить к ним доступ в O (1) вместо O (n), чтобы я выполнял цикл всего XML за один раз и доступ к структуре данных для последующих итераций.
Хотя это решение работает (но очень уродливое, но, тем не менее, решение), я думаю, что ваши рассуждения ошибочны. Я подозреваю, что вы предполагаете стоимость поиска: см. Http://stackoverflow.com/a/2771398/27385 –