iOS 中的 XML 处理
解析不是
utf-8 的 xml 文件(尤其是中文网站的 rss 文件):
如果
url 中有中文:
[cpp:nogutter] view plain
const char *str = [searchURL UTF8String];
NSString *url = [NSString stringWithUTF8String:str];
url = [url stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding];
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:url]];
gbk 编码的 xml 文件:
NSString *xmlStr = [[NSString alloc] initWithData:inData encoding:0×80000632];
NSString *newXMLStr = [xmlStr stringByReplacingOccurrencesOfString:@"encoding=/"gbk/""
withString:@"encoding=/"UTF-8/""];
NSXMLParser
*nextParser
=
[[NSXMLParser
alloc]
initWithData:[newXMLStr
dataUsingEncoding:NSUTF8StringEncoding]];
在
iOS 中解析 XML
以读文件的形式
iOS 中的 XML 是 event-driven 模式
step-1:打开一个 xml 文件,读取内容到 NSData 中
2:调用 NSXMLParse 的 nitWithData 方法,并设置代理 tweetParser.delegate = self;
3:调用回调函数
注意:
xml 文件的第一个 tag 必须要顶格写!
<?xml version=”1.0″ encoding=”UTF-8″?>
<bookstore>
<book catalog=”Programming”>
<title lang=”en”>C++ Programming Language</title>
<author>Bjarne Stroustrup</author>
<year>1998</year>
<price>98.0</price>
</book>
<book catalog=”Networking”>
<title lang=”en”>TCP/IP Illustrated</title>
<author>Richard Stevens</author>
<year>1996</year>
<price>56.0</price>
</book>
</bookstore>
可以
[NSXMLParser parserError]调用来得到错误的信息:
NSXMLParserErrorDomain error 4: xml 文件格式有问题(如上面)
NSXMLParserErrorDomain error 5: 打开文件失败
在
iOS4.1 中如果不显示实现 NSXMLParseDelegate 的话会有一条 warning 的提示,但是实行
是没有问题的。