易于使用的基于 NSXMLParser 构建的自动 XML 解析器。只需两步即可将 XML 数据转换为本机 'Obj C 对象'。
如何使用
将 SHXMLParser 库文件夹添加到您的项目。
XML 示例
<rss>
<channel>
<item id='1'>
<title>I am under surveillance by Canadian agents, my computer has been backdoored</title>
<link>http://log.nadim.cc/?p=110</link>
<comments>http://news.ycombinator.com/item?id=5194489</comments>
<description><a href="http://news.ycombinator.com/item?id=5194489">Comments</a></description>
</item>
<item id='2'>
<title>Why I Like Go</title>
<link>https://gist.github.com/freeformz/4746274</link>
<description><a href="http://news.ycombinator.com/item?id=5195257">Comments</a></description>
</item>
</channel>
</rss>
使用以下代码可以从上述类似的 XML 中获取字典对象数组。属性将被自动获取。
SHXMLParser *parser = [[SHXMLParser alloc] init];
NSDictionary *resultObject = [parser parseData:self.webServicesData];
NSArray *dataArray = [SHXMLParser getDataAtPath:@"rss.channel.item" fromResultObject:resultObject];
注意:如果路径("rss.channel.item")只包含一个项目,则将返回 NSDictionary 而不是 NSArray。如果路径指向只有一个字符串值的叶子节点,将返回字符串值。
如果您想要将数据数组中的字典对象转换为类对象以提高类型安全,请使用以下代码。
NSArray *classVariables = [NSArray arrayWithObjects:@"title", @"link", @"comments", @"description", nil];
self.dataItems = [SHXMLParser convertDictionaryArray:dataArray toObjectArrayWithClassName:@"DataItem" classVariables:classVariables];
请注意,对于上述转换,应包含在 'classVariables' 数组中提到的公开变量名称的 'DataItem' 类,否则您将获得运行时错误。
到此为止,无需编写大量针对节点和元素的特定解析代码来使用 NSXMLParser 从 XML 数据中检索数据。
要求 需要 iOS 5.0+ 和 ARC。使用 Xcode 4.5+ 构建并测试。
随意分叉和更新库
许可 MIT 许可