非常に大きくなる可能性のある XML ファイルを効率的に解析する必要があります (したがって、ファイル全体をメモリに格納することはできません)。そのため、XMLStreamReader などのストリーミング技術を調べましたが、これらは非常に低レベルであり、非常にハードコードされたコードを生成するようです。
event = parser.next();
switch (event)
{
case XMLStreamConstants.START_ELEMENT:
elementName = parser.getLocalName();
if (elementName.equals("name")){
state = FOUND_A_NAME;
}else if (elementName.equals("address")){
state = FOUND_AN_ADDRESS;
}
ETC...
}
パーサーと解析対象をあまり密接に結び付けずにこれを行う方法を探しています。さらに、このコードは正しくないと感じています。これは、より真にイベント指向であるべきだと思われます。
何かアドバイス?