XML/HTML 解析库 Ono

MIT
Objective-C HTML/CSS
OS X
2015-09-17
sikkx

Ono (斧)是 iOS & Mac OSX 处理  XML & HTML 的一种明智的方法(解析库)

XML 在 Cocoa 的支持并不好NSXMLParser 强制要求繁琐的委托模式,这是非常不方便实现的。 NSXMLDocument 有一点好用,但只能在 Mac OS X 工作, 但占用大量内存。

Ono 使得处理 XML & HTML 像 JSON 一样棒。

不管你的 app 是否需要 XML-RPC web服务的接口,爬一个网页,或者解析一个 RSS feed,Ono 会让你的工作更轻松。

特性

  • 简单,现代的 API 遵循标准 Objective-C 公约,包括扩展使用块和 NSFastEnumeration

  • 极高性能文档解析和遍历, powered by libxml2

  • 支持 XPathCSS 查询

  • 自动转换的日期和数字值

  • 正确,正常地处理元素和属性的 XML 命名空间

  • 能够从 NSStringNSData 加载 HTML 和 XML 文档

  • 完整文档

  • 全面的测试套件

使用:

#import "Ono.h"
NSData *data = ...;
NSError *error;
ONOXMLDocument *document = [ONOXMLDocument XMLDocumentWithData:data error:&error];
for (ONOXMLElement *element in document.rootElement.children) {
    NSLog(@"%@: %@", element.tag, element.attributes);
}
// Support for Namespaces
NSString *author = [[document.rootElement firstChildWithTag:@"creator" inNamespace:@"dc"] stringValue];
// Automatic Conversion for Number & Date Values
NSDate *date = [[document.rootElement firstChildWithTag:@"created_at"] dateValue]; // ISO 8601 Timestamp
NSInteger numberOfWords = [[[document.rootElement firstChildWithTag:@"word_count"] numberValue] integerValue];
BOOL isPublished = [[[document.rootElement firstChildWithTag:@"is_published"] numberValue] boolValue];
// Convenient Accessors for Attributes
NSString *unit = [document.rootElement firstChildWithTag:@"Length"][@"unit"];
NSDictionary *authorAttributes = [[document.rootElement firstChildWithTag:@"author"] attributes];
// Support for XPath & CSS Queries
[document enumerateElementsWithXPath:@"//Content" usingBlock:^(ONOXMLElement *element, NSUInteger idx, BOOL *stop) {
    NSLog(@"%@", element);
}];


加载中

评论(2)

随风无缘
随风无缘
mark #Ono#
ios122
ios122
我感觉还是 服务器 爬数据的 场景更多些! #Ono#

暂无资讯

暂无问答

迭代3:4.3 UC1,UC2相关的数据库

迭代3:4.3 UC1,UC2相关的数据库

2015/05/03 03:12
33
0
EOS区块链DApp去中心化应用汇总

EOS最近一直在区块链新闻中。它的主干网(公有链)发布了,人们仍然对它们持怀疑态度。在101Blockchain.com网站上,我们知道会有紧张的投资者、怀疑的分析家和像你一样好奇的读者。这就是为什...

2018/11/02 22:45
67
0
最好的40个EOS区块链dApp项目(一)

EOS最近一直在区块链新闻中。它的主干网(公有链)发布了,人们仍然对它们持怀疑态度。在101Blockchain.com网站上,我们知道会有紧张的投资者、怀疑的分析家和像你一样好奇的读者。这就是为什...

2018/08/09 16:36
632
0
微信公众号支付模块的开发

来北京没多久,找了家互联网公司,进公司后让我负责一个微信公众号项目中的支付模块,经过这段时间的研究,算是对它有了较为全面的了解,下面就来说说微信公众号中支付的过程;

2016/09/22 17:24
274
2
iOS开发中常用第三方库的整理 

名称 作用 说明 AFNetworking 基于HTTP协议联网 SDWebImage 图片缓存和异步加载 YYWebImage 图片缓存和异步加载 Ono XML解析 RaptureXML XML解析 KissXML XML解析 YYModel JSON-模型对象转换...

2016/09/09 12:02
48
1
第69节:Java中数据库的多表操作

第69节:Java中数据库的多表操作 前言 学习数据库的多表操作,去电商行业做项目吧!!! 达叔,理工男,简书作者&全栈工程师,感性理性兼备的写作者,个人独立开发者,我相信你也可以!阅读他的文...

01/17 21:39
1
0
Java第二十六天(mysql多表操作)

SQL创建多表及多表的关系 多表间关系的维护 外键约束:foreign key 给product中的这个cno添加一个外键约束 alter table product add foreign key(cno) references category(cid); 再插入cid...

07/01 20:50
14
0
ReactiveCocoa实战: 模仿 "花瓣",重写 LeanCloud Rest Api的iOS

这一次我们将要讨论的是移动开发中比较重要的一环--网络请求的封装.鉴于个人经验有限,本文将在一定程度上参考 [基于AFNetworking2.0和ReactiveCocoa2.1的iOS REST Client](http://limboy.me...

2015/10/31 14:57
130
0
机器学习 - 使用scikit-learn进行数据预处理

数据预处理 sklearn.preprocessing包提供了几个数据预处理中常用的功能和变换器,用于将原始特征向量更改为更适合进行机器学习模型的形式。一般来说,数据的标准化使得机器学习算法更加显著,...

08/03 09:40
5
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部