В кой-то веки раз понадобилось отпарсить XML. На Perl или C/C++ - пока не принципиально. XML большой, DOM нахрен не нужен, поэтому только SAX. XML качается по HTTP, кусками неизвестного размера. Так вот - оказалось, что ничего из XML инструментария не умеет что мне нужно. libXml2 вроде как самый продвинутый, умеет парсить кусками (push) и умеет SAX. Но только не вместе. Остальное (expat, tinyxml, xerces-c2) не умеют либо SAX, либо парсят только документ целиком в файле или памяти, никаких кусков. Даже для Perl ничего нет. Что делать? Нужен-то фактически банальный лексер + пара XML-специфичных удобств, который очень не хочется писать самому. Единственное, что мне приходит в голову с существующими инстументами - использовать xerces или XML::Parser в SAX + Pull режиме и писать для него класс для pull'а, который собственно и читает поток с HTTP.
|