'?'в строках ломая мой XML-парсер - PullRequest
0 голосов
/ 14 июня 2011

Разбор файла, содержащего XML, прерывается, когда есть строка, содержащая '?'.В качестве примера вы можете увидеть строку ниже.

<Radio id="32">
<stationName>BBC 5 Live</stationName>
<streamType>aac+</streamType>
<streamBandwidth>48kbps</streamBandwidth>
<streamURL>http://bbcmedia.ic.llnwd.net/stream/bbcmedia_he2_5live_q?s=1308038932&e=1308053332&h=868e4fa343b375695183f6a3bd0267d9</streamURL>
</Radio>

Есть ли способ кодировать '?'или какой способ обычно используется для решения такого рода проблем, как я полагаю, с этим часто сталкиваются.

Строка кода, которая обрабатывает это (я полагаю):

[aRadio setValue:currentElementValue forKey:elementName];

Хотя, может быть, это не то, где оно ломается.1011 *

Ответы [ 3 ]

0 голосов
/ 14 июня 2011

Есть несколько способов справиться с этим.

1) Процент кодирования строки перед отправкой с сервера (ваш «?» Станет «% 3F») и декодирование данных при получении в вашем приложении. - см. этот ответ для более подробной информации.

2) Используйте маркеры CDATA вокруг этого бита данных - см. Здесь для получения более подробной информации

0 голосов
/ 14 июня 2011

Скорее всего, проблема не в '?' символ, но символы '&' в вашем URL. Символ «&» имеет особое значение в XML (он используется для запуска таких сущностей, как &amp; или &lt;), поэтому анализатор XML не будет работать, если не найдет действительную сущность. Для этого нужно заключить значение в раздел CDATA, как предлагает Дин Уомбурн.

0 голосов
/ 14 июня 2011

Попробуй это.Преобразовать его в UTF8

NSData *data = [myString dataUsingEncoding:NSUTF8StringEncoding];  

Затем проанализировать с этими данными ...

NSXMLParser *parser = [[NSXMLParser alloc] initWithData:data];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...