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

前台页面展示在之前几篇博客中已经详细写过了。在这里就不重复了,下面主要说一下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/