🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: cn.bbs.comp.xml
Article #214

sd

#214
From: <Test/>
Date: Tue, 27 Apr 2010 15:21
169 lines
7717 bytes
ԭ������ : http://www.yifeiyang.net/iphone-web-development-techniques-of-the-chapter-1-parsing-xml/
ת���뱣���������֡�
iPhone ��XML��
XML �������ڴ�ռ��
libxml2 vs NSXMLParser
NSXMLParser ������
libxml2 ������
�� Ŀ�����libxml
libxml �е�SAX������
ʹ ��DOM����
Google Data APIs
TouchXML
KissXML
iPhone��������֮����ƪ��1��--- ����XML

���� iPhone �ϵ�����Ӧ�ó����ʱ��ʱ����Ҫ����XML�ĵ�������webӦ���е�SOAP��REST��RSS��Ϣ�ȶ�����XMLΪ��ġ�����XML�����ļ����Ǻ��� Ҫ�ġ������ҽ�Ϊ��ҽ���һ��iPhone�½���XML�ļ��ַ��������Ƚ������ܡ�

iPhone��XML��

iPhone�б�׼��XML���������������ֱ���libxml2��NSXMLParser��

libxml2��Gnome��Ŀ������������MIT�Ŀ���Э�飬�Ѿ���ֲ������ƽ̨����iPhone��Ҳ��ʹ�á�

libxml2���ص��DZȽϿ졣������Ϊ����XML���������ṩSAX��DOM�������������Ӧ��XML��׼��࣬������ƿռ䡢XPath�� XPointer��HTML��XInclude��XSLT��XML Schema��Relax NG�ȡ�����������C����д�ģ��Ƚϸ��١�

NSXMLParser��Cocoa���ں���XML����������ֻ�ṩ��SAX�����Ĺ��ܡ���Ϊ��Cocoa��һ���֡�����API�� Objective-C�ģ�������Macϵͳ������ǿ��ʹ��Ҳ��Լ򵥡�

XML�������ڴ�ռ��

����iPhoneҲ��һ��Ƕ��ʽ�豸�������������Ƕ��ʽ�豸һ��ͬ�����ڴ棬CPU����Դռ�����⡣������ѡ��� ����ʱ����Ҫ�����������ڴ�ռ�õ����⡣

һ��XML�Ľ�������SAX������DOM�������ַ�ʽ�����֮��SAX�Ƚ�С�ɾ��ɣ��ķѵ��ڴ�С��������Ϊ�����˼����DOM��ȫ��һ��һ�ߵ� �����һ�߽������ɻص��ķ�ʽ֪ͨ�õ�����ݣ�û����DOM���ĸ��

���ڵ�iPhone 3G���ص�RAM��128MB��3GS��256MB����������iPhone OS����ʹ�õġ����и������ʹ�������ͬ������MP3���ʼ���Safari�ȳ�פ����ȡ������Լ��ij����ʹ�õ��ڴ��С��10MB���ҵĿռ䡣

����XML���������ʱ����Ҫע�⵽XML�ļ�һ�㶼�Ƚϴ����ʹ��DOM�Ļ�����ѵ��ڴ����϶��ܶࡣ������iPhone�����������ֽ����� ֻ��ʹ��SAX�Ľ�����ʽ��DOM��ʽֻ����ģ������ʹ�ã�����NSXMLDocument�ࣩ���ŵ�ʵ���豸�ϾͲ������ˡ���������������½����ҽ� ����һ��ʹ��DOM�ĵ����������С��XML�ĵ�����ֵ��һ�õġ���

libxml2 vs NSXMLParser

һ����ʹ��libxml2��SAX�������أ�����ʹ��NSXMLParser�ܣ�����ͨ�������SDK�и��������� XMLPerformance���������ԡ�

��ͬ��XML�ĵ����������أ�Ȼ��������ȽϵĽ������ ��

������ʱ        ������ʱ        �ϼ�
NSXMLParser     1.419s  5.525s  7.134s
libxml2 2.520s  2.247s  2.646s
���Կ�����libxml2��NSXMLParser��öࡣ�������Ǵ���ķ�ʽ��Щ��ϵ��NSXMLParser�е���SAX API��ʱ�򣬲�������Ϊ�ַ��ݵģ���Ҫ��ת��ΪNSString������NSDictionary���󣬲�������libxml2������һ������һ�� ��������Ҫ����ļ��������˲ſ�ʼ����������˵����һ��ʹ��libxml2��

NSXMLParser������

������XML�����������£�

1
2
3
4
5
<?xml version="1.0" encoding="UTF-8"?>
<users>
    <user name="hoge" age="20" />
    <user name="fuga" age="30" />
</users>
�������£�

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
static NSString *feedURLString = @"http://www.yifeiyang.net/test/test.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:@"user"]) {
        // �������ֵ
        NSLog(@"Name is %@ , Age is %@", [attributeDict objectForKey:@"name"], [attributeDict objectForKey:@"age"]);
    }
}

- (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
}

NSError *parseError = nil;
[self parseXMLFileAtURL:[NSURL URLWithString:feedURLString] parseError:&parseError];
ʵ��ʹ�õ�ʱ�������������⣬���еĵ���һ�����У������������������Ĵ��롣
--
Happy XMLing


�� �޸�:��thinkhy �� Apr 27 23:21:27 2010 �޸ı��ġ�[FROM: 114.249.210.*]
�� ��Դ:��ˮľ���� newsmth.net��[FROM: 114.249.210.*]
Technical Details
Message-ID: <4lX8kO$ALJ@newsmth.net>
Path: arc1-ca.pugleaf.net!g2news1.google.com!news1.google.com!news2.google.com!news.glorb.com!news.neu.edu.cn!news.byr.edu.cn!news.newsmth.net!NEWSMTH

Show Full Headers
Complete Article Headers
X-Google-Thread: f7ebf7e2af,db6fa9e1f08b4a7e,start
X-Google-Attributes: gidf7ebf7e2af,public,usenet
X-Google-NewGroupId: yes
X-Google-Language: Chinese,GB
Path: arc1-ca.pugleaf.net!g2news1.google.com!news1.google.com!news2.google.com!news.glorb.com!news.neu.edu.cn!news.byr.edu.cn!news.newsmth.net!NEWSMTH
From: thinkhy@newsmth.net-SPAM.no (<Test/>)
Newsgroups: cn.bbs.comp.xml
Subject: sd
Date: 27 Apr 2010 15:21:27 GMT
Organization: ˮľ����
Message-ID: <4lX8kO$ALJ@newsmth.net>
Mime-Version: 1.0
Content-Type: text/plain; charset="gb2312"
Content-Transfer-Encoding: 8bit
X-Filename: XML/B/M.1272381624.80