精选文章 解析xml

解析xml

作者:diezhi9415 时间: 2011-09-04 11:33:00
diezhi9415 2011-09-04 11:33:00

方案一:

#import "xmlViewController.h"

@implementation xmlViewController


static NSString *feedURLString = @"http://headlines.yahoo.co.jp/rss/sci.xml";

- (void)parserDidStartDocument:(NSXMLParser *)parser
{
// 解析开始时的处理
}

- (void)parseXMLFileAtURL:(NSURL *)URL parseError:(NSError **)error
{
NSXMLParser
*parser = [[NSXMLParser alloc] initWithContentsOfURL:URL];
[parser setDelegate:self];
[parser setShouldProcessNamespaces:NO];
[parser setShouldReportNamespacePrefixes:NO];
[parser setShouldResolveExternalEntities:NO];
[parser parse];
NSError
*parseError = [parser parserError];
if (parseError && error) {
*error = parseError;
}
[parser release];
}

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
// 元素开始句柄
if (qName) {
elementName
= qName;
}
if ([elementName isEqualToString:@"PicInfoListResult"]) {
// 输出属性值
//NSLog(@"Name is %@", [attributeDict objectForKey:@"Success"]);//,[attributeDict objectForKey:@"RecordCount"]);


}
}

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
// 元素终了句柄
if (qName) {
elementName
= qName;
}
}

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
// 取得元素的text
NSLog(@"%@",string);
}

- (void)viewDidLoad{
NSError
*parseError = nil;
[self parseXMLFileAtURL:[NSURL URLWithString:feedURLString] parseError:
&parseError];

[super viewDidLoad];
}

- (void)dealloc {
[super dealloc];
}

@end

  

方案二:

#import "xml2ViewController.h"

@implementation xml2ViewController

+(void) parseTest {
// 取得获取Yahoo新闻标题的RSS
NSString *urlStr = @"http://headlines.yahoo.co.jp/rss/sci.xml";
// 使用NSXMLParser三部曲:生成、设置代理和开始解析
NSXMLParser *parser = [[NSXMLParser alloc]
initWithContentsOfURL:[NSURL URLWithString:urlStr]];
xml2ViewController
*sp = [[xml2ViewController alloc]init];

[parser setDelegate:sp];
[parser parse];
NSError
*parseError = [parser parserError];
if (parseError ) {
NSLog(
@"Err %@",[parseError description]);
}
NSLog(
@"parseEnd");
}

- (void)viewDidLoad{
[xml2ViewController parseTest];

[super viewDidLoad];
}

-(id)init {
if (self = [super init]) {
tagPath
= [[[NSMutableArray alloc]init]retain];
tagPathAttributs
= [[[NSMutableArray alloc]init]retain];
[tagPath addObject:
@""];
[tagPathAttributs addObject:[NSDictionary dictionary]];
}
return self;
}
-(void)dealloc {
[tagPath release];
[tagPathAttributs release];
[super dealloc];
}

// 获取Tag的全路径
-(NSString*)tagFullPath {
return [tagPath componentsJoinedByString:@"/"];
}

// 开始解析
- (void)parser:(NSXMLParser *)parser
didStartElement:(NSString
*)elementName
namespaceURI:(NSString
*)namespaceURI
qualifiedName:(NSString
*)qName
attributes:(NSDictionary
*)attributeDict
{
NSString
*tag = [elementName copy];
[tagPath addObject:tag];
[tagPathAttributs addObject:[attributeDict copy]];

//开始获取文字列
NSString *tagFullPath = [self tagFullPath];
NSLog(
@"%@",tagFullPath);
if ([tagFullPath hasPrefix:@"/PicInfoListResult/Success"]) {
recordingText
= [[[NSMutableString alloc]init] autorelease];
[recordingText appendString:
@""];
NSLog(
@"%@",recordingText);
}
}

// Tag的完成
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName
namespaceURI:(NSString
*)namespaceURI qualifiedName:(NSString *)qName {
//结束获取文字列
NSString *tagFullPath = [self tagFullPath];
if ([tagFullPath hasPrefix:@"/PicInfoListResult/Success"]) {
NSLog(
@"Title:%@",recordingText);
recordingText
= nil;
}

[tagPath removeLastObject];
[tagPathAttributs removeLastObject];
}

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
// 记录所取得的文字列
if (recordingText!=nil) {
[recordingText appendString:
string];
}
NSLog(
@"%@",string);
}
- (void)parser:(NSXMLParser *)parser foundCDATA:(NSData *)CDATABlock{
//NSLog(@"cData:%@",[NSString stringWithUTF8String:[CDATABlock bytes]]);
}

@end

  

转载于:https://www.cnblogs.com/visen-0/archive/2011/09/04/2166078.html

勿删,copyright占位
分享文章到微博
分享文章到朋友圈

上一篇:php面向对象2011/9/4

下一篇:EmpireCMS 6.0 管理权限GETSHELL

您可能感兴趣

  • HIDL详解-Android10.0 HwBinder通信原理(二)

    摘要:本节主要来讲解Android10.0 HIDL相关知识 阅读本文大约需要花费18分钟。 文章首发微信公众号:IngresGe 专注于Android系统级源码分析,Android的平台设计,欢迎关注我,谢谢! [Android取经之路] 的源码都基于Android-Q(10.0) 进行分析 [Android取经之路] 系列文章: 《系统启动篇》 Android系统架构 Android是怎...

  • SpringMVC框架的入门学习01

    SpringMVC的基本概念 关于三层架构和MVC 三层架构 我们的开发架构一般都是基于两种形式,一种是 C/S 架构,也就是客户端/服务器,另一种是 B/S 架构,也就是浏览器服务器。在 JavaEE 开发中,几乎全都是基于 B/S架构的开发。那么在 B/S架构中,系统标准的三层架构包括:表现层、业务层、持久层。三层架构在我们的实际开发中使用的非常多,所以很多案例也都是基于三层架构设计的。...

  • HTML5和WAP的联系与区别!

      随着时代的快速发展,移动互联网加速来临,有越来越多的热门技术被人们提及和应用。虽然人们对于HTML5大前端、大数据、云计算、等热门IT技术热情不减,但对于技术与技术之间的区别以及具体生活的应用了解的还不是十分详细。今天,就让我们以HTML5大前端为例,具体讲解一下移动互联网时代下HTML5大前端和WAP之间的区别与联系。   首先,从定义上区分。HTML5的全称是“超文本标记语言”,它是...

  • cocos2d 之lua加密

    加密方式 lua 代码加密方式很很多种,这里只讲最简单的一种,就是把代码编译成二进制字节码。lua 是一门脚本语言,不需要经过编译就可以使用 lua 解释器来执行;但我们也可以把 lua 代码事先编译成二进制文件,这样就达到了加密的方式。 使用 lua 编译器 最简单也最直接的方式就是使用 lua 编译器来编译 lua 代码,编译的方式很简单,打开命令行,输入下面的命令 lucac -o o...

  • 2020B证(安全员)考试及B证(安全员)模拟考试题库

    题库来源:安全生产模拟考试一点通公众号小程序 2020B证(安全员)考试及B证(安全员)模拟考试题库,包含B证(安全员)考试答案解析及B证(安全员)模拟考试题库练习。由安全生产模拟考试一点通公众号结合国家B证(安全员)考试最新大纲及B证(安全员)考试真题出具,有助于B证(安全员)考试软件考前练习。 1、【单选题】多台挖掘机在同一作用面机械开挖,挖掘机间距应大于( )。( B ) A、5m B...

  • C++STL 体系结构与内核分析(侯捷)——课程笔记(十一)

    现在开始了算法的讲解。本部分包括迭代器的类型以及其对算法的影响,还包括一点traits的内容。 STL中的Algorithms对Containers一无所知,所以它需要的一切信息都必须从Iterators取得,而Iterators必须能够回答Algorithms的所有提问,才能搭配Algorithms的所有操作。 一、iterators的各种iterator_category 一共有五种it...

  • OpenCV 识别图片中的米粒个数,并计算米粒的平均面积和长度(转)

    介绍 OpenCV+Python 使用OpenCV构建图像识别算法,识别图片中的米粒个数,并计算米粒的平均面积和长度 软件架构 模块:OpenCV 4.0.0.21 编程语言:Python 3.7.2 编译器:PyCharm 2018 程序设计思路 首先介绍一下程序设计的思路: 图像采集(取到图像):可以用摄像头拍摄或者图片直接导入 图像预处理:对图像进行灰度化 基于灰度的阈值分割:使用局部...

  • JetPack WorkManager

    1.概览 官方文档:WorkManager 谷歌实验室:官方教程 官方案例:android-workmanager WorkManger介绍视频:中文官方介绍视频 谷歌工程师博客:https://medium.com/androiddevelopers/workmanager-basics-beba51e94048 Android JetPack实例学习:https://www.jiansh...

华为云40多款云服务产品0元试用活动

免费套餐,马上领取!
CSDN

CSDN

中国开发者社区CSDN (Chinese Software Developer Network) 创立于1999年,致力为中国开发者提供知识传播、在线学习、职业发展等全生命周期服务。