我需要有效地解析可能非常大的 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...
}
我正在寻找一种方法来做到这一点,而不会将解析器与要解析的东西紧密耦合,此外,这段代码感觉不对。看起来这应该更真正面向事件。
有什么建议吗?