NSXMLParser init с XML в формате NSString - PullRequest
10 голосов
/ 03 декабря 2009

Я только что столкнулся с этим и, похоже, не смог получить четкого ответа из документации.

Я получаю XML через соединение HTTPS. Я делаю все виды аутентификации и т. Д., Так что у меня есть набор классов, которые хорошо справляются с этим. В результате получается строка NSString, которая выглядит примерно так:

<response>
//some XML formatted test
</response>

Это означает, что кодировка = "UTF-8" indent = "yes" method = "xml" или другие блоки заголовка не указывают на то, что это фактический XML, а не просто строка NSString.

Полагаю, я буду использовать [NSXMLParser initWithData: NSData] для создания синтаксического анализатора, но как мне отформатировать или преобразовать мою строку NSString текста в формате xml в соответствующий объект NSData, который NSXMLParser будет понимать и анализировать?

Надеюсь, это имеет смысл, спасибо за любую помощь, оказанную:)

Ответы [ 3 ]

31 голосов
/ 03 декабря 2009

Вы можете преобразовать строку в объект NSData, используя метод dataUsingEncoding:

NSData *data = [myString dataUsingEncoding:NSUTF8StringEncoding];

Затем вы можете передать это NSXMLParser.

2 голосов
/ 03 декабря 2009

Заголовки являются необязательными, но при необходимости вы можете вставить соответствующие заголовки самостоятельно:

NSString *header = @"<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
NSString *xml = [NSString stringWithFormat:@"%@\n%@", header, response);
NSData *data = [xml dataUsingEncoding:NSUTF8StringEncoding];
NSXMLParser *praser = [NSXMLParser initWithData:data];
1 голос
/ 03 декабря 2009

К тому времени, когда NSXMLParser будет иметь данные, они будут ожидать, что это будет XML ;-)

Я почти уверен, что заголовок инструкции по обработке является необязательным в этом контексте. То, как вы получите NSString в NSData, будет диктовать кодировку (используя dataUsingEncoding:).

(правка: я искал enum для кодирования, но Филипп Лейбер обошел меня с этим, но все равно повторить здесь, что-то вроде: [nsString dataUsingEncoding:NSUTF8StringEncoding])

Я передал NSString XML таким способом без проблем.

Не относится к этому вопросу как таковому, но по вопросу синтаксического анализа XML в контексте iPhone в целом вы можете найти мою запись в блоге тоже интересной.

...