XML文件解析---SAX方法

XML文件如下:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<books>

<book name="book1" num="1" >  出版于1991年 </book>

<book name="book2" num="2" >  出版于1992年 </book>

<book name="book3" num="3" >  出版于1993年 </book>

<book name="book4" num="4" >  出版于1994年 </book>

</books>

解析后的结果:

封装model来接收解析后的XML文件数据

JRBook.h文件

#import <Foundation/Foundation.h>

@interface JRBook : NSObject

//书籍名称

@property (nonatomic,copy)NSString * name;

//书籍数量

@property (nonatomic,assign) NSInteger number;

//出版年份

@property (nonatomic,copy) NSString * punDate;

+ (JRBook *) getBookWithDic:(NSDictionary *) dic;

@end

JRBook.m文件

#import "JRBook.h"

@implementation JRBook

+ (JRBook *) getBookWithDic:(NSDictionary *) dic

{

JRBook * book=[[JRBook alloc]init];

book.name=dic[@"name"];

book.number=[dic[@"num"] integerValue];

return  book;

}

@end

ViewController.m文件

#import "ViewController.h"

#import "JRBook.h"

@interface ViewController () <NSXMLParserDelegate>

{

JRBook * tempBook;

NSMutableString * tempPublic;

}

/**  存放model 的数组  */

@property (nonatomic,strong) NSMutableArray * dataArray;

@end

@implementation ViewController

#pragma mark - 懒加载

- (NSMutableArray *) dataArray

{

if (_dataArray==nil)

{

_dataArray=[NSMutableArray array];

}

return  _dataArray;

}

#pragma mark - 程序入口

- (void)viewDidLoad {

[super viewDidLoad];

}

#pragma mark - 点击屏幕开始解析XML文件

- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

{

//1>>> 初始化parse对象

NSString * path=[[NSBundle mainBundle]pathForResource:@"xml.xml" ofType:nil];

NSData * data=[NSData dataWithContentsOfFile:path];

NSXMLParser * parse=[[NSXMLParser alloc]initWithData:data];

//2>>> 设置代理,监控解析

parse.delegate=self;

//3>>> 开始解析

[parse parse];

//4>>>

for(JRBook * book in self.dataArray)

{

NSLog(@"书籍名称: %@-----书籍数量: %li----出版年份:%@",book.name,book.number,book.punDate);

}

}

#pragma mark - 实现 NSXMLParserDelegate 的代理方法

- (void)parserDidStartDocument:(NSXMLParser *)parser

{

//NSLog(@"start");

}

- (void)parserDidEndDocument:(NSXMLParser *)parser

{

//NSLog(@"end");

}

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict

{

if([elementName isEqualToString:@"book"])

{

tempPublic=[NSMutableString string];

tempBook =[JRBook getBookWithDic:attributeDict];

}

}

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName

{

if([elementName isEqualToString:@"book"])

{

tempBook.punDate=tempPublic;

[self.dataArray addObject:tempBook];

}

}

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string

{

[tempPublic appendString:string];

}

@end

时间: 2024-10-13 23:30:28

XML文件解析---SAX方法的相关文章

android之XML文件解析 -- SAX

xml文件解析之SAX 下面的实例代码主要采用的是SAX事件驱动处理机制来解析XML文件,SAX解析XML是通过逐行扫描的方式完成的,占用内存小.dom机制是将文件全部读出,然后再以树结构的形式,来完成查找.删除等操作,对内存占用较大 MyContentHandler.java     此文件是事件处理器实现 package com.example.analysisxml; import org.xml.sax.Attributes; import org.xml.sax.SAXExceptio

XML文件解析【安卓7】——SAX解析

XML文件解析 XML解析:XML技术是Android平台的应用基础,  Android提供了多种解析XML的方式:SAX解析.DOM解析.PULL解析 SAX解析 SAX --Simple  API  forXML  (XML简单的API) --解析速度快.占用内存少 --提供一组简单的API用于解析XML文件 --SAX在解析XML文件前,先指定一个解析事件处理器(Handler),SAX会对XML文档进行简单的顺序扫描,当扫描到[文档(Document)的开始和结束.元素(Element)

八、Android学习第七天——XML文件解析方法(转)

(转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 八.Android学习第七天——XML文件解析方法 XML文件:extensible markup language 定义:用于标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言. 解析XML的方式: SAX——Simple API for XML,既是一种接口,也是一个软件包采用的是事件驱动,也就是它解析

XML文件解析-DOM4J方式和SAX方式

最近遇到的工作内容都是和xml内容解析相关的. 1图片数据以base64编码的方式保存在xml的一个标签中,xml文件通过接口的方式发送给我,然后我去解析出图片数据,对图片进行进一步处理. 2.xml内容保存在blob字段中,然后jdbc读取blob字段获取xml内容进行解析. 解析的方法挺简单的,网上有很多种,主要有SAX,DOM4J等. 先来揭晓一下DOM4J是如何解析xml文件的,话不多少,直接上码. /** * 获取xml文件绝对路径 */ private String getFileP

java基础之概谈xml文件解析

XML已经成为一种很通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便.诸多web应用框架,其可配置的编程方式,给我们的开发带来了很大程度的便捷,但细细想来,它们的应用无一不是java bean与xml之间的转换解析.本文将对xml的两种操作标准DOM和SAX,从它们各自的特点.适用范围等方面进行简单介绍. DOM (Document Object Model) :DOM标准中,采用W3C标准表示XML,有多重语言支持,因此其跨平台性很好.采用DOM规范

QT开发(四十一)——XML文件解析基础

QT开发(四十一)--XML文件解析基础 一.XML文档简介 XML(Extensible Markup Language,可扩展标记语言),是一种通用的文本格式,被广泛运用于数据交换和数据存储,而不是显示数据.XML的标签没有被预定义,用户需要在使用时自行进行定义.XML是W3C(万维网联盟)的推荐标准.相对于数据库表格的二维表示,XML使用的树形结构更能表现出数据的包含关系,作为一种文本文件格式,XML简单明了的特性使得它在信息存储和描述领域非常流行. <?xml version="1

QT开发(四十五)——XML文件解析总结

QT开发(四十五)--XML文件解析总结 一.XML文件解析方式的特点 1.DOM解析XML文档的特点 基于DOM的解析器的核心是在内存中建立和XML文档相对应的树状结构.XML文件的标记.标记中的文本数据和实体等都是内存中的树状结构的某个节点相对应. 优点:可以方便地操作内存中的树状节点 缺点:如果XML文件较大,或者只需要解析XML文档的一部分数据,就会占用大量的内存空间 2.SAX解析XML文档的特点 SAX解析的核心是事件处理机制,SAX采用事件机制的方式来解析XML文档.使用SAX解析

Python实现XML文件解析

1. XML简介 XML(eXtensible Markup Language)指可扩展标记语言,被设计用来传输和存储数据,已经日趋成为当前许多新生技术的核心,在不同的领域都有着不同的应用.它是web发展到一定阶段的必然产物,既具有SGML的核心特征,又有着HTML的简单特性,还具有明确和结构良好等许多新的特性. test.XML文件 <?xml version="1.0" encoding="utf-8"?> <catalog> <m

xml文件解析基础和签名

0. 前言 参考文档1:使用dom4j读取xml文件的四种方式 参考文档2:dom4j解析xml文件 参考文档3:String 和 document 的相互转换总结 参考文档4: Java SE 6中 XML 数字签名的标准 Java 接口 参考文档5:XML Security with Digital Signature in JAVA 1.xml文件的解析 1.1 基本的jdk解析xml的原始api解析 声明 1.以下代码块要放到一个类中才能运行 dom类型为:org.w3c.dom.* 解