SAX преждевременное окончание разбора? - PullRequest
2 голосов
/ 22 мая 2009

Я относительно новичок в работе с XML и работаю с некоторыми довольно большими документами, используя javax.xml.parsers.SAXParser.

Дело в том, что нужная мне информация находится в верхней части XML-файла, и мне не нужно для анализа всего документа. - Каков «лучший» способ прекратить анализ файла, когда соответствующая информация была идентифицирована?

(Пока единственный способ, которым я могу придумать, - это выбросить исключение.)

Ответы [ 3 ]

2 голосов
/ 22 мая 2009

Бросок исключения - единственный способ остановить его. См. этот совет IBM XML для примера.

Возможно, вам следует реализовать собственное исключение, чтобы сообщить о намерении прекратить дальнейшую обработку. Таким образом, вы сможете различить преднамеренную остановку обработки и непреднамеренную остановку (при неожиданном сценарии и т.

2 голосов
/ 22 мая 2009

Вы можете использовать StAX. Фактически он останавливает процесс разбора в любое время без каких-либо исключений.

Выезд:

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

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

1 голос
/ 23 ноября 2010

Кажется, что исключение является лучшим способом решения этой проблемы, как обрисовал в общих чертах Том :

public class MySAXTerminatorException extends SAXException {
...
}

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