当包含'?'的字符串时,解析包含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];
虽然我可能不是它破裂的地方。
非常感谢, -code
答案 0 :(得分:0)
试试这个。将其转换为UTF8
NSData *data = [myString dataUsingEncoding:NSUTF8StringEncoding];
然后解析这些数据......
NSXMLParser *parser = [[NSXMLParser alloc] initWithData:data];
答案 1 :(得分:0)
有几种方法可以解决这个问题。
1)在从服务器发送之前对字符串进行百分比编码(您的'?'将变为'%3F')并在您的应用中收到时解码数据。 - 有关详细信息,请参阅this answer。
2)在这一位数据周围使用CDATA标记 - see here了解更多详情
答案 2 :(得分:0)
最有可能的问题不是'?'性格,但'&amp;'您网址中的字符。 '&amp;' character在XML中具有特殊含义(它用于启动&
或<
等实体),因此如果XML解析器找不到有效实体,则它将失败。要做的就是将值包装在CDA部分中,如deanWombourne建议的那样。