Iphone 对NSArray的XML响应
我解析一个xml文件以获取两个节点“tagid”和“mac”的内容。 如何将此内容存储在两个阵列中,一个用于“tagid”,另一个用于“mac” “解析器”可以工作。先谢谢你Iphone 对NSArray的XML响应,iphone,ios,xml,arrays,Iphone,Ios,Xml,Arrays,我解析一个xml文件以获取两个节点“tagid”和“mac”的内容。 如何将此内容存储在两个阵列中,一个用于“tagid”,另一个用于“mac” “解析器”可以工作。先谢谢你 -(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSD
-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {
self.currentElement = elementName;
self.currentElement2 = elementName;
if ([self.currentElement isEqualToString:@"mac"]) {
self.currentTitle = [NSMutableString string];
}
if ([self.currentElement2 isEqualToString:@"tagid"]) {
self.currentTitle2 = [NSMutableString string];
}
}
-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
if ([self.currentElement isEqualToString:@"mac"]) {
NSLog(@"%@", self.currentTitle);
}
if ([self.currentElement2 isEqualToString:@"tagid"]) {
NSLog(@"%@", self.currentTitle2);
}
self.currentTitle = nil;
self.currentElement = nil;
self.currentTitle2 = nil;
self.currentElement2 = nil;
}
-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
if (!self.currentElement) return;
if ([self.currentElement isEqualToString:@"mac"]) {
self.currentTitle = string;
}
if (!self.currentElement2) return;
if ([self.currentElement2 isEqualToString:@"tagid"]) {
self.currentTitle2 = string;
}
}
- (IBAction)aktualisieren:(id)sender {
NSURL *xmlURL = [[NSURL alloc] initWithString:@"http://mysite/mycontent"];
parser = [[NSXMLParser alloc] initWithContentsOfURL:xmlURL];
[parser setDelegate:self];
[parser parse];
}
感谢您的回复:)在
parseStartDocument
中创建两个数组。一个用于mac MacArray,一个用于tagid tagArray
在
didEndElement
方法中,检查元素并将您的self.currentTitle
添加到与数组相关的元素中。in.h声明两个数组tagArray和macArray。
在viewDidLoad alloc init中,加载两个数组
-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
if ([self.currentElement isEqualToString:@"mac"]) {
[macArray addObject:self.currentTitle];
NSLog(@"%@", self.currentTitle);
}
if ([self.currentElement2 isEqualToString:@"tagid"]) {
[macArray addObject:self.currentTitle2];
NSLog(@"%@", self.currentTitle2);
}
self.currentTitle = nil;
self.currentElement = nil;
self.currentTitle2 = nil;
self.currentElement2 = nil;
}
您需要两个不同的阵列
-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {
self.currentElement = elementName;
self.currentElement2 = elementName;
if ([self.currentElement isEqualToString:@"mac"]) {
self.currentTitle = [NSMutableString string];
NSMutableArray *macArray = [NSMutableArray alloc] init];
}
if ([self.currentElement2 isEqualToString:@"tagid"]) {
self.currentTitle2 = [NSMutableString string];
NSMutableArray *tagIdArray = [NSMutableArray alloc] init];
}
}
-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
if ([self.currentElement isEqualToString:@"mac"]) {
NSLog(@"%@", self.currentTitle);
[macArray addObject:self.currentTitle];
}
if ([self.currentElement2 isEqualToString:@"tagid"]) {
NSLog(@"%@", self.currentTitle2);
[tagIdArray addObject:self.currentTitle2];
}
self.currentTitle = nil;
self.currentElement = nil;
self.currentTitle2 = nil;
self.currentElement2 = nil;
}
声明两个可变数组:
NSMutableArray *macArray , *tagidArray;
macArray = [[NSMutableArray alloc]init];
tagidArray = [[NSMutableArray alloc]init];
-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
if ([self.currentElement isEqualToString:@"mac"]) {
[macArray addObject:self.currentTitle];
NSLog(@"%@", self.currentTitle);
}
if ([self.currentElement2 isEqualToString:@"tagid"]) {
[tagidArray addObject:self.currentTitle2];
NSLog(@"%@", self.currentTitle2);
}
}
-(void)parserDidEndDocument{
//Do something as parsing has been completed here and your values are in two arrays
}
顺便说一下,如果其中任何一个是长字符串,可能会被分成多个调用
foundCharacters
。因此,foundCharacters
应始终附加字符串,而不是设置字符串:
-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
if (!self.currentElement) return;
if ([self.currentElement isEqualToString:@"mac"]) {
[self.currentTitle appendString:string];
}
if (!self.currentElement2) return;
if ([self.currentElement2 isEqualToString:@"tagid"]) {
[self.currentTitle2 appendString:string];
}
}
谢谢,祝你今天愉快