在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...