SAX过早结束解析?

时间:2009-05-22 13:08:09

标签: java xml sax

我对使用XML相对较新,并且正在使用javax.xml.parsers.SAXParser处理一些相当大的文档。

问题是:我需要的信息靠近XML文件的顶部,我不需要需要来解析整个文档。 - 在确定相关信息后停止解析文件的“最佳”方法是什么?

(到目前为止,我能想到的唯一方法是抛出异常。)

3 个答案:

答案 0 :(得分:2)

您可以使用StAX。它实际上会随时停止解析过程而不会抛出任何异常。

退房:

http://www.xml.com/pub/a/2003/09/17/stax.html

http://jcp.org/en/jsr/detail?id = 173

答案 1 :(得分:2)

抛出异常是阻止异常的唯一方法。有关示例,请参阅this IBM XML tip

您应该实现自己的异常,以表示有意停止进一步处理。通过这种方式,您将能够区分故意停止处理和意外停止(遇到某些意外情况等)。

答案 2 :(得分:1)

似乎抛出异常是解决此问题的最佳方法,如outlined by Tom

public class MySAXTerminatorException extends SAXException {
...
}

public void startElement (String namespaceUri, String localName,
                          String qualifiedName, Attributes attributes)
                        throws SAXException {
    if (someConditionOrOther) {
        throw new MySAXTerminatorException();
    }
    ...
}