效果图:
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(@”开始分析树结构“);
ones = [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) {
one=[[NSMutableDictionary alloc] initWithCapacity:10];
[one setObject:string forKey:@"title"];
}else if (Tag==2) {
[one setObject:string
forKey:@"content"];
}
}
}
@end
http://wangjun.easymorse.com/?p=829