charactersFound方法中的陷阱
来源:互联网 发布:大逃杀新手知乎 编辑:程序博客网 时间:2024/05/17 10:56
libxml2恐怕是linux下最著名的xml解析库了,其sax API不仅解析效率高,速度快,而且内存占用率更是出奇的低。因此是iphone开发中必不可少的xml解析库。
但sax解析是基于事件驱动的,使用门槛较dom解析为高,不容易为初学者掌握,代码难于阅读和理解。比如笔者写过这样的代码:
//解析元素体时触发
- (void)charactersFound:(constxmlChar*)ch
len:(int)len
{
NSString* string;
string = [[NSStringalloc] initWithBytes:ch length:len encoding:NSUTF8StringEncoding];
//取login_status元素体
switch (flag) {
case1:
[itemsetObject:string forKey:@"GNID"];
break;
case2:
[itemsetObject:string forKey:@"YWBH"];
break;
case3:
[itemsetObject:string forKey:@"QDRQ"];
break;
}
}
- (void)charactersFound:(constxmlChar*)ch
len:(int)len
{
[stringappendString:[[NSString alloc]initWithBytes:ch length:len encoding:NSUTF8StringEncoding]];
//解析元素结束标记时触发
- (void)endElementLocalName:(constxmlChar*)localname
prefix:(const xmlChar*)prefix URI:(const xmlChar*)URI
{
switch (flag) {
case1:
[itemsetObject:string forKey:@"GNID"];
break;
case2:
[itemsetObject:string forKey:@"YWBH"];
break;
case3:
[itemsetObject:string forKey:@"QDRQ"];
break;
}
flag=0;
}
然后在元素开始标记回调方法startElementLocalName中,重置string变量:
[stringrelease];
string=[[NSMutableString alloc]init];
- charactersFound方法中的陷阱
- charactersFound方法中的陷阱
- List.add()方法中的陷阱
- ResultSet中next()方法中的一个陷阱。
- Java File类中的renameTo方法陷阱
- java List.subList方法中的陷阱
- 七个Swift中的陷阱以及避免方法
- 七个Swift中的陷阱以及避免方法
- list的remove方法中的陷阱
- java List.subList方法中的超级大陷阱
- java List.subList方法中的超级大陷阱
- java List.subList方法中的超级大陷阱
- SCJP考题中的陷阱
- Java面试中的陷阱
- Java面试中的陷阱
- Java面试中的陷阱
- Java面试中的陷阱
- Java面试中的陷阱
- Android程序的签名保护及绕过方法
- 把mysql读取的图片显示在jsp 页面上
- 二分查找(上界,下界)
- 如何搭建Selenium-Grid2环境(Java)(自动化测试技术)
- UVA 12206 - Stammering Aliens(Hash+LCP)
- charactersFound方法中的陷阱
- 黑马程序员02——基础1
- shell基础二:查找技巧,find及xargs的使用
- Linux/UNIX时间转换函数
- 一个反射方法响应web平台所有ajax数据请求,让web开发速度提高一倍
- 欧拉函数
- 索引
- Android NDK几点回调方式(device id & signature)
- zookeeper安装