原文地址:KissXML 简易教程
作者:殷昭
KissXML 是我觉得最简单方便的XML解析器了,更重要是很简单的支持Xpath
在项目中使用前先简单配置下.
- 在这里下载源代码
here - 添加除了DDXMLTesting 外的文件
- 根据下图配置libxml
打开项目属性
添加如下内容
OTHER_LDFLAGS = -lxml2
HEADER_SEARCH_PATHS = /usr/include/libxml2
如图
然后就可以使用KissXML了
Xml代码
- <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#代码
- //hack
to remove xmlns => avoid xpath search not works -
xmlStr = [xmlStr stringByReplacingOccurre ncesOfString:@"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,原因位置)