在SAX解析期间确定根元素
我正在使用SAX来解析XML文件。 假设我希望我的应用程序只处理具有根元素“ animalList ”的XML文件 – 如果根节点是其他东西,则SAX解析器应该终止解析。
使用DOM,你会这样做:
... Element rootElement = xmldoc.getDocumentElement(); if ( ! rootElement.getNodeName().equalsIgnoreCase("animalList") ) throw new Exception("File is not an animalList file."); ...
但我无法确定如何使用SAX来做 – 我无法弄清楚如何告诉SAX解析器确定根元素。 但是,我知道如何在任何时候停止解析(在查看Tom的解决方案之后 )。
示例XML文件:
Old Joe Spike Scooby Ginger Tom Keta
谢谢。
虽然我上次多次使用SAX并且不记得API,但我认为处理程序接收的第一个标记是根元素。 因此,您应该创建一个布尔类成员,指示您是否已经检查了第一个元素:
boolean rootIsChecked = false;
然后写入你的处理程序:
if (!rootIsChecked) { if (!"animalList".equals(elementName)) { throw new IllegalArgumentException("Wrong root element"); } rootIsChecked = true; } // continue parsing...