开发者

'?' in strings breaking my XML parser

The parsing of a file containing XML breaks when ever there is a string containing '?'. As an example you can see the line below.

<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>

Is there some way to encode the '?' or what is the way thats generally used to handle this kind of problem, as I would imagine this would be encountered a lot.

The line of code that handles this (i believe) is :

[aRadio setValue:curre开发者_高级运维ntElementValue forKey:elementName];

Though I maybe that is not where it breaks.

Many Thanks, -Code


Most probably, the problem is not the '?' character, but the '&' characters in your URL. The '&' character has a special meaning in XML (it is used to start entities like &amp; or &lt;), so the XML parser will fail if it doesn't find a valid entity. The way to go is to wrap the value in a CDATA section as deanWombourne suggests.


Try this. Convert it into UTF8

NSData *data = [myString dataUsingEncoding:NSUTF8StringEncoding];  

Then parse with this data...

NSXMLParser *parser = [[NSXMLParser alloc] initWithData:data];


There's a few ways of dealing with this.

1) Percent encode the string before sending from the server (your '?' would become '%3F') and decode the data when you receive in in your app. - see this answer for more details.

2) Use CDATA markers around this bit of data - see here for more details

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜