KissXML 简易教程

原文地址:KissXML 简易教程 作者:殷昭

 

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

 

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

 

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

OTHER_LDFLAGS = -lxml2

HEADER_SEARCH_PATHS = /usr/include/libxml2

如图

 

然后就可以使用KissXML了

 

Xml代码
  1. <smil xmlns="http://www.w3.org/2000/SMIL20/CR/Language">  
  2. <head>  
  3. </head>  
  4. <body>  
  5. <par dur="120000ms" >  
  6. <text region="Text" src="att000.txt" />  
  7. </par>  
  8. <par dur="120000ms" >  
  9. <text region="Text" src="att010.txt" />  
  10. </par>  
  11. <par dur="10000ms" >  
  12. <img region="Image" src="att020.jpg"/>  
  13. </par>  
  14. <par dur="120000ms" >  
  15. <text region="Text" src="att040.txt" />  
  16. </par>  
  17.   
  18. <par dur="10000ms" >  
  19. <img region="Image" src="att120.gif"/>  
  20. </par>  
  21. </body>  
  22. </smil>  
<smil xmlns="http://www.w3.org/2000/SMIL20/CR/Language">
<head>
</head>
<body>
<par dur="120000ms" >
<text region="Text" src="att000.txt" />
</par>
<par dur="120000ms" >
<text region="Text" src="att010.txt" />
</par>
<par dur="10000ms" >
<img region="Image" src="att020.jpg"/>
</par>
<par dur="120000ms" >
<text region="Text" src="att040.txt" />
</par>

<par dur="10000ms" >
<img region="Image" src="att120.gif"/>
</par>
</body>
</smil>

 

我们的目标是获取该xml媒体内容的 src 地址

 

C#代码
  1. //hack to remove xmlns => avoid xpath search not works   
  2.  xmlStr [xmlStr stringByReplacingOccurrencesOfString:@"xmlns" withString:@"noNSxml"];   
  3.  NSMutableArray* contents [NSMutableArray array];   
  4.   
  5.  NSError* error nil;   
  6.  DDXMLDocument* xmlDoc [[DDXMLDocument alloc] initWithXMLString:xmlStr options:0 error:&error];   
  7.   
  8.  if (error) {   
  9.  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.   
//hack to remove xmlns => avoid xpath search not works
 xmlStr = [xmlStr stringByReplacingOccurrencesOfString:@"xmlns" withString:@"noNSxml"];
 NSMutableArray* contents = [NSMutableArray array];

 NSError* error = nil;
 DDXMLDocument* xmlDoc = [[DDXMLDocument alloc] initWithXMLString:xmlStr options:0 error:&error];

 if (error) {
 NSLog(@"%@",[error localizedDescription]);
 return nil;
 }

 NSArray* resultNodes = nil;
 resultNodes = [xmlDoc nodesForXPath:@"//audio | //text | //image | //img" error:&error];

 if (error) {
 NSLog(@"%@",[error localizedDescription]);
 return nil;
 }

 for(DDXMLElement* resultElement in resultNodes)
 {
 NSString* name = [resultElement name];
 //audio , text or other media type
 NSString* fileName = [[resultElement attributeForName:@"src"] stringValue];
 // 0.txt
 }

 

注意第一行,我把xmlns给删除了,(否则kissxml无法正常使用xpath,原因位置)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值