Потоковая передача 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, Я'видел много "теоретически вы могли бы сделать х " вроде ответов, предлагая все отCFStreamCreateBoundPair чтобы схватитьHTTPBodyStream отNSURLRequest, но я'Мы еще не сталкивались с рабочей демонстрацией потоковой передачи.NSXMLParser

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

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

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