這是我需要解析iOS版 - 解析xml數據集,
<GetMessagesResult>
<NewDataSet xmlns="">
<Table>
<Date>21:52:59</Date>
<Message>ABC</Message>
<GroupName>ALL</GroupName>
</Table>
<Table>
<Date>11:23:27</Date>
<Message>DEF</Message>
<GroupName>ALL</GroupName>
</Table>
</NewDataSet>
</GetMessagesResult>
我的XML數據這是我SCMessages.h文件
#import <Foundation/Foundation.h>
@interface SCMessages : NSObject
{
NSDate *Date;
NSString *Message;
NSString *GroupName;
}
@property (nonatomic, retain) NSDate *Date;
@property (nonatomic, retain) NSString *Message;
@property (nonatomic, retain) NSString *GroupName;
,這是我SCMessages.m文件
#import "SCMessages.h"
@implementation SCMessages
@synthesize Date;
@synthesize Message,GroupName;
- (void)dealloc
{
[super dealloc];
[Date release];
[Message release];
[GroupName release];
}
@end
我用下面的代碼來解析數據使用NSXMLParser
委託方法
#pragma mark - NSXMLParser Delegate
-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *) namespaceURI qualifiedName:(NSString *)qName
attributes: (NSDictionary *)attributeDict
{
if([elementName isEqualToString:@"GetMessagesResult"])
{
if(!soapResults)
soapResults = [[NSMutableString alloc] init];
recordResults = TRUE;
}
if([elementName isEqualToString:@"NewDataSet"]) {
//Initialize the array.
messages = [[NSMutableArray alloc] init];
}
else if([elementName isEqualToString:@"Table"]) {
//Initialize the message.
aMessage = [[SCMessages alloc] init];
}
}
-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
if(recordResults)
[soapResults appendString: string];
}
-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
if([elementName isEqualToString:@"Table"]) {
[messages addObject:aMessage];
NSLog(@"MESSAGES COUNT: %d",messages.count);
NSLog(@"MESSAGE: %@",aMessage);
[aMessage release];
aMessage = nil;
}
// as this is the last element
if([elementName isEqualToString:@"NewDataSet"])
{
recordResults = FALSE;
}
}
問題我不與日期獲取所需信息的對象,Meesage &組名。
我把NSLog
打印出來,但我總是得到空值。奇怪的是消息數組獲取分配內存&元素也被添加到數組中,因爲我可以看到消息數組數爲NSLog
,但數組元素的數據爲空值。
我解析在NSURLConnection的委託方法connectionDidFinishLoading
NSString *theXML = [[NSString alloc] initWithBytes: [webData mutableBytes] length:[webData length] encoding:NSUTF8StringEncoding];
NSLog(@"theXML: \n%@",theXML);
謝謝。你明白了嗎? – Nirav
@Nirav。嘿謝謝兄弟。我明白了。 –