用libxml解析XML ( 重 点 )

一开始学的时候用NSXMLParser解析xml,后来网上论坛各种大大说解析慢不好,所以我就换libxml解析,但是在解析豆瓣的时候遇到问题,怎么用Xpath就解析不出来,后来一度放弃,想换成ns的,但是我觉得有个人王谢写的那个libxml解析库的函数实在太好用了,各种查资料我发现了,原来是xmlns!!!!!,它惹得祸,于是我就字符串替换了xmlns为noNSxml,然后在吧字符串编码为NSData,终于解析过了,这里附上部分核心代码和过程,谨记谨记!!不光解决了这个问题,还学会了string转换为data的过程。

 
一下是豆瓣个人信息api返回的xml格式,例子,供参考:
http://api.douban.com/people/ahbei
<?xml version="1.0" encoding="UTF-8"?> <entry xmlns="http://www.w3.org/2005/Atom" xmlns:gd="http://schemas.google.com/g/2005" xmlns:opensearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:db="http://www.douban.com/xmlns/"> <db:location id="beijing">北京</db:location> <db:uid>ahbei</db:uid> <title>阿北</title> <content> 豆瓣的临时总管。现在多数时间在忙忙碌碌地为豆瓣添砖加瓦。坐在马桶上看书,算是一天中最放松的时间。 我不但喜欢读书、旅行和音乐电影,还曾经是一个乐此不疲的实践者,有一墙碟、两墙书、三大洲的车船票为记。现在自己游荡差不多够了,开始懂得分享和回馈。豆瓣是一个开始,希望它对你同样有用。 </content> <link rel="self" href="http://api.douban.com/people/ahbei" /> <link rel="alternate" href="http://www.douban.com/people/ahbei/" /> <link rel="icon" href="http://www.douban.com/icon/u1000001.jpg" /> <link rel="homepage" href="http://ahbei.com/" /> <id>http://api.douban.com/people/ahbei</id> </entry>
 
 
解析包暂时就不说了,一下是主要代码:
response the error 我省略了,简单demo
 1 NSURL *url = [NSURL URLWithString:@"http://api.douban.com/people/ahbei"];
2 NSURLRequest *request = [NSURLRequest requestWithURL:url];
3 NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
4 NSString *dataString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
5 dataString = [dataString stringByReplacingOccureencesOfString:@"xmlns" withString@"noNSxml"];
6 data = [dataString dataUsingEncoding:UTF8StringEncoding];
7 NSArray *parse = PerformXMLPathQuery(data, @"//content");
8 NSDictionary *node = [NSDictionary dictionaryWithDictionary:[parse objectAtIndex:0]];
9 NSString *content = [node valueForKey:@"nodeContent"];
10 NSLog(@"%@",content);
 
 结果如下:
 
总算是解析成功了。以后要知道这种问题。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值