KissXML 是我觉得最简单方便的XML解析器了,更重要是很简单的支持Xpath
在项目中使用前先简单配置下.
- 在这里下载源代码 here
- 添加除了DDXMLTesting 外的文件
- 根据下图配置libxml
打开项目属性
添加如下内容:
OTHER_LDFLAGS = -lxml2
HEADER_SEARCH_PATHS = /usr/include/libxml2
导入 :
#import "DDXML.h"
#import "DDXMLElementAdditions.h"
然后就可以使用KissXML了
01 | < smil xmlns = "http://www.w3.org/2000/SMIL20/CR/Language" > |
07 | < text region = "Text" src = "att000.txt" /> |
11 | < text region = "Text" src = "att010.txt" /> |
15 | < img region = "Image" src = "att020.jpg" /> |
18 | < text region = "Text" src = "att040.txt" /> |
23 | < img region = "Image" src = "att120.gif" /> |
我们的目标是获取该xml媒体内容的 src 地址
02 | xmlStr = [xmlStr stringByReplacingOccurrencesOfString:@ "xmlns" withString:@ "noNSxml" ]; |
03 | NSMutableArray* contents = [NSMutableArray array]; |
06 | DDXMLDocument* xmlDoc = [[DDXMLDocument alloc] initWithXMLString:xmlStr options:0 error:&error]; |
09 | NSLog(@ "%@" ,[error localizedDescription]); |
13 | NSArray* resultNodes = nil; |
14 | resultNodes = [xmlDoc nodesForXPath:@ "//audio | //text | //image | //img" error:&error]; |
17 | NSLog(@ "%@" ,[error localizedDescription]); |
21 | for (DDXMLElement* resultElement in resultNodes) |
23 | NSString* name = [resultElement name]; |
25 | NSString* fileName = [[resultElement attributeForName:@ "src" ] stringValue]; |