Зависит от того, как вы определяете «анализ».
«Быстрый и грязный» (и потенциально ошибочный) способ заключается в том, чтобы сначала найти фрагмент, используя поиск по регулярному выражению (или пользовательский анализатор), а затем передать фрагмент в настоящий анализатор XML. Я не знаю ничего, что сделало бы это для вас, вам бы пришлось свернуть это самостоятельно. Я бы предположил, что это не тот путь.
Следующий уровень - передать его через SAX-подобный синтаксический анализатор (форма NSXMLParser).
В вашем обработчике для элемента
проверьте атрибут id и, если он соответствует вашему значению (или значениям), установите флаг, чтобы указать, следует ли интерпретировать дочерние элементы.
В ваших обработчиках дочерних элементов, сначала проверьте этот флаг (конечно, в необработанном обработчике NSXMLParser все элементы будут идти к одному и тому же методу).
Так что это правда, что NSXMLParser будет анализировать весь документ - но только для того, чтобы выполнить минимальную работу для установления правильного контекста XML-анализатора. Реальная работа с элементами будет отложена до тех пор, пока значение не будет достигнуто. Я не вижу возможности обойти это без чего-то хакерского, вроде предложения регулярного выражения.
Если это слишком много, я бы пересмотрел, является ли XML подходящим для вас форматом сериализации (при условии, что у вас есть какой-то контроль над этим)?
Если вы придерживаетесь NSXMLParser, моя статья в блоге здесь может помочь, по крайней мере, улучшить восприятие.