Потоковая передача NSXMLParser с помощью NSInputStream

Обновить:

Когда используешьNSXMLParser метод классаinitWithContentsOfURLвместо синтаксического анализа при загрузке XML-канала он пытается загрузить весь XML-файл в память и только затем запустить процесс синтаксического анализа. Это проблематично, если подача XML велика (использование чрезмерного объема ОЗУ, по своей сути неэффективно, поскольку вместо анализа параллельно с загрузкой, он начинает анализ только после завершения загрузки и т. Д.).

Кто-нибудь обнаружил, как анализировать, как поток передается на устройство с помощьюNSXMLParser? Да, вы можете использоватьLibXML2 (как обсуждается ниже), но кажется, что это должно быть возможно сделать сNSXMLParser, Но это ускользает от меня.

Оригинальный вопрос:

Я боролся с использованиемNSXMLParser читать XML из веб-потока. Если вы используетеinitWithContentsOfURLв то время как интерфейс может привести к выводу о том, что он будет передавать XML из Интернета, он, похоже, этого не делает, а скорее пытается сначала загрузить весь XML-файл, прежде чем произойдет какой-либо анализ. Для XML-файлов небольшого размера это хорошо, но для действительно больших это проблематично.

Я видел обсуждение использованияNSXMLParser в сочетании сinitWithStream с некоторыми настроеннымиNSInputStream это потоковое из Интернета. Например, были ответы на это, которые предлагают использовать что-то вродеCFStreamCreateBoundPair упоминается вследующая запись Cocoa Builder и обсуждениеНастройка потоков сокетов в яблокеРуководство по программированию потоков, но я не получил его на работу. Я даже пытался написать свой собственный подклассNSInputStream что использовалNSURLConnection (что само по себе довольно хорошо для потоковой передачи), но я не смог заставить его работать вместе сNSXMLParser.

В итоге я решил использоватьLibXML2 скорее, чемNSXMLParser, как продемонстрировано в AppleПример XMLPerformance, но мне было интересно, если кому-то повезло получить потоковую передачу из веб-источника, работающего сNSXMLParser, Я видел много "теоретически вы могли бы сделатьxвроде ответов, предлагая все отCFStreamCreateBoundPair чтобы схватитьHTTPBodyStream изNSURLRequest, но я еще не сталкивался с рабочей демонстрацией потоковой передачи сNSXMLParser.

Статья Рэя ВендерлихаКак выбрать лучший XML-парсер для вашего iPhone проекта кажется, подтверждает, чтоNSXMLParser не очень подходит для больших файлов XML, но со всеми постами о возможномNSXMLParserОбходные пути для потоковой передачи действительно больших XML-файлов, я удивлен, что мне еще не удалось найти рабочую демонстрацию этого. Кто-нибудь знает о функционированииNSXMLParser реализация, которая течет из Интернета? Ясно, я могу просто придерживатьсяLibXML2 или некоторый другой эквивалентный синтаксический анализатор XML, но понятие потоковой передачи сNSXMLParser кажется близлежащим.

Ответы на вопрос(1)

Ваш ответ на вопрос