XML解析遇到的问题
-------------- question 1 --------------------
--> NSDate与NSString相互转换的问题
1、NSDate转换为NSString
//输入的日期字符串形如:@"1992-05-21 13:08:08"
- (NSDate *)dateFromString:(NSString *)dateString
{
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat: @"yyyy-MM-dd HH:mm:ss"];
NSDate *destDate= [dateFormatter dateFromString:dateString];
[dateFormatter release];
return destDate;
}
2、NSString转换为NSDate
- (NSString *)stringFromDate:(NSDate *)date{
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
//zzz表示时区,zzz可以删除,这样返回的日期字符将不包含时区信息 +0000。
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss zzz"];
NSString *destDateString = [dateFormatter stringFromDate:date];
[dateFormatter release];
return destDateString;
}
-------------- question 2 --------------------
-->编码转换的问题
NSXMLParser只能解析UTF-8编码的文件,当来自网站的xml编码不是UTF-8时需要进行一定的处理;
例如页面编码为GBK的时候解析xml的编码:
NSURL *url = [NSURLURLWithString:@"http://news.163.com/special/00011K6L/rss_newstop.xml"];
NSData *data = [NSData dataWithContentsOfURL:url];
NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);
NSString *retStr = [[NSString alloc] initWithData:data encoding:enc];
/*此时控制台打印的信息才不会是乱码*/
-------------- question 3 --------------------
-->CDDATA节内的信息解析
- (void)parser:(NSXMLParser *)parser foundCDATA:(NSData *)CDATABlock{
NSString *string =[[NSStringalloc]initWithData:CDATABlock encoding:NSUTF8StringEncoding];
[self.currentItemValue appendString:string];
}
-->普通节点内的信息解析
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
if(nil != self.currentItemValue){
[self.currentItemValue appendString:string];
}
}
浙公网安备 33010602011771号