KissXML 简易教程

文章来源 http://ixhan.com/2010/03/tutorial-of-kissxml-iphone/

KissXML 是我觉得最简单方便的XML解析器了,更重要是很简单的支持Xpath

在项目中使用前先简单配置下.

  • 在这里下载源代码  here
  • 添加除了DDXMLTesting 外的文件
  • 根据下图配置libxml
打开项目属性
添加如下内容

OTHER_LDFLAGS = -lxml2

HEADER_SEARCH_PATHS = /usr/include/libxml2

如图

KissXML 简易教程

然后就可以使用KissXML了

01 <smil xmlns="http://www.w3.org/2000/SMIL20/CR/Language">
02  
03 <head>
04 </head>
05 <body>
06 <par dur="120000ms" >
07 <text region="Text" src="att000.txt" />
08  
09 </par>
10 <par dur="120000ms" >
11 <text region="Text" src="att010.txt" />
12 </par>
13 <par dur="10000ms" >
14  
15 <img region="Image" src="att020.jpg"/>
16 </par>
17 <par dur="120000ms" >
18 <text region="Text" src="att040.txt" />
19  
20 </par>
21  
22 <par dur="10000ms" >
23 <img region="Image" src="att120.gif"/>
24 </par>
25 </body>
26  
27 </smil>

我们的目标是获取该xml媒体内容的 src 地址
01 //hack to remove xmlns => avoid xpath search not works
02  xmlStr = [xmlStr stringByReplacingOccurrencesOfString:@"xmlns"withString:@"noNSxml"];
03  NSMutableArray* contents = [NSMutableArray array];
04  
05  NSError* error = nil;
06  DDXMLDocument* xmlDoc = [[DDXMLDocument alloc] initWithXMLString:xmlStr options:0 error:&error];
07  
08  if (error) {
09  NSLog(@"%@",[error localizedDescription]);
10  return nil;
11  }
12  
13  NSArray* resultNodes = nil;
14  resultNodes = [xmlDoc nodesForXPath:@"//audio | //text | //image | //img"error:&error];
15  
16  if (error) {
17  NSLog(@"%@",[error localizedDescription]);
18  return nil;
19  }
20  
21  for(DDXMLElement* resultElement in resultNodes)
22  {
23  NSString* name = [resultElement name];
24  //audio , text or other media type
25  NSString* fileName = [[resultElement attributeForName:@"src"] stringValue];
26  // 0.txt
27  }

注意第一行,我把xmlns给删除了,(否则kissxml无法正常使用xpath,原因位置)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值