Article View: cn.bbs.comp.xml
Article #214sd
From: <Test/>
Date: Tue, 27 Apr 2010 15:21
Date: Tue, 27 Apr 2010 15:21
169 lines
7717 bytes
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];
ʵ��ʹ�õ�ʱ�������������⣬���еĵ���һ�����У������������������Ĵ��롣
--
[1;36mHappy XMLing
[36m�� ��:��thinkhy �� Apr 27 23:21:27 2010 �ı��ġ�[FROM: 114.249.210.*][m
[m[1;35m�� ��Դ:��ˮľ���� newsmth.net��[FROM: 114.249.210.*][m
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!NEWSMTHShow 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