没有根的野草,漂浮的命途

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

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

}

}

 

posted on 2012-04-20 11:26  针尖上的舞者  阅读(260)  评论(0)    收藏  举报