Вероятно, вы можете использовать columnNumber, методы анализатора lineNumber, чтобы получить местоположение, где начинается ваш элемент (т.е. сохранить их как column1, line1 в didStartElement для элемента, который вы ищете), затем, когда этот элемент заканчивается, в didEndElement получить column2и снова line2, а затем просто обрежьте текст из исходного XML из (line1, column1) в (line2, column2).
Довольно хакерский, но, вероятно, это сработает.
Редактировать: вИзвлеките текст, который вы могли бы сделать следующим образом:
__block int lineNumber = 0;
__block NSMutableString* result = [NSMutableString stringWithCapacity:100];
[str enumerateLinesUsingBlock:^(NSString* line, BOOL* stop) {
if(lineNumber == line1) {
[result appendString:[line substringFromIndex:column1]];
}
if(lineNumber > line1 && lineNumber < line2) [result appendString:line];
if(lineNumber == line2) {
[result appendString:[line substringToIndex:column2]];
}
lineNumber++;
if(lineNumber > line2) *stop = YES;
}];
Я не знаю, находится ли позиция парсера, когда элемент начинается / заканчивается, в начале или в конце этого элемента - вам может понадобитьсялибо пропустите его самостоятельно, либо, если позиция находится в конце элемента, проверьте, не находятся ли column1 / column2 вне строки (в этом случае просто ничего не добавляйте).Кроме того, если вам нужно сохранить символы новой строки, вам необходимо добавить их самостоятельно (вместо appendString: str используйте appendFormat: "% @ \ n", str)