iphone利用xml传递数据

在这篇文章中主要阐述一下读取xml数据,然后显示在相应的视图中。

效果图:

201008172010.jpg

 

前台页面展示在之前几篇博客中已经详细写过了。在这里就不重复了,下面主要说一下xml的读取,iphone sdk已经给我们实现好了NSXMLParser,我们只需继承重写一些方法既可。

代码声明:

#import <Foundation/Foundation.h>

@interface XmlWelcome : NSXMLParser{

NSMutableArray *ones;

NSMutableDictionary *one;

int inOne;

int inTwo;

int Tag;

}

@property (nonatomic,retain) NSMutableArray *ones;

@end

声明实现:

    #import “XmlWelcome.h”


    @implementation XmlWelcome


    @synthesize ones;


    //开始一个dom树分析

    - (void)parserDidStartDocument:(NSXMLParser *)parser {

    NSLog(@”开始分析树结构“);

    nes = [NSMutableArray arrayWithCapacity:100];

    }

    //开始节点 内的信息

    - (void)parser:(NSXMLParser *)parser

    didStartElement:(NSString *)elementName

    namespaceURI:(NSString *)namespaceURI

    qualifiedName:(NSString *)qualifiedName

    attributes:(NSDictionary *)attributeDict

    {

    NSLog(@”开始的节点是:%@”,elementName);

    if ([elementName isEqual:@"title"]) {

    Tag=1;

    }else if ([elementName isEqual:@"content"]) {

    Tag=2;

    }

    if ([elementName isEqual:@"item"]) {

    NSString *lang=[attributeDict objectForKey:@"lang"];

    if ([lang isEqual:@"zh"]) {

    inOne=1;

    }

    }

    if (inOne==1&&[elementName isEqual:@"value"]) {

    inOne=0;

    inTwo=1;

    }

    if ([elementName isEqual:@"image"]) {

    NSString *message=[attributeDict objectForKey:@"src"];

    [one setObject:message forKey:@"image"];

    }

    }

    //结束节点

    - (void)parser:(NSXMLParser *)parser

    didEndElement:(NSString *)elementName

    namespaceURI:(NSString *)namespaceURI

    qualifiedName:(NSString *)qName

    {

    NSLog(@”结束节点:%@”,elementName);

    if ([elementName isEqual:@"pavilion"]) {

    Tag=0;

    [ones addObject:one];

    [one release];

    }

    }

    // 结束dom

    - (void)parserDidEndDocument:(NSXMLParser *)parser

    {

    NSLog(@”结束dom树分析“);

    }

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

    {

    NSLog(@”节点的实际值:%@”,string);

    if (inTwo==1) {

    inTwo=0;

    if (Tag==1) {

    ne=[[NSMutableDictionary alloc] initWithCapacity:10];

    [one setObject:string forKey:@"title"];

    }else if (Tag==2) {

    [one setObject:string

    forKey:@"content"];

    }

    }

    }

@end

 

里面有些算法比较烂,我也是初学着,大家共同讨论。

其余部分看源代码:http://easymorse-android.googlecode.com/svn/trunk/WelcomePavilion/

1111111 -
共有0个回答