Специальные символы в атрибутах XML с NSXMLParser - PullRequest
0 голосов
/ 27 января 2012

Я получаю что-то вроде следующего от стороннего API:

<el attr="test.

another test." />

Я использую NSXMLParser, чтобы прочитать файл в мое приложение.

Однако в делегате атрибут преобразуется в test. another test. Очевидно, я хотел бы видеть его с неповрежденными разрывами строк.

Сначала я предполагал, что это ошибка, но, согласно спецификации XML, все работает правильно:

символ пробела (# x20, #xD, #xA, # x9) обрабатывается добавление # x20 к нормализованному значению

( См. Раздел 3.3.3. )

Какие у меня варианты? Обратите внимание, что это сторонний API, поэтому я не могу его изменить, даже если он неправильный.

1 Ответ

3 голосов
/ 27 января 2012
NSData *xmlData = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"url://"]];
NSMutableString *myXmlStr = [[NSMutableString alloc] initWithData:xmlData encoding:NSUTF8StringEncoding];
NSRange range = [myXmlStr rangeOfString:@"\n"];
[myXmlStr replaceCharactersInRange:range withString:@"[:newline:]"];
NSData *newXmlData = [myXmlStr dataUsingEncoding:NSUTF8StringEncoding];

Просто замените [: newline:] символом новой строки всякий раз, когда вам это нравится:)

...