当我尝试使用NSXMLParser解析XML文件时,我无法解析所有元素.XML响应如下所示:
<List>
<Details>
<AId>1</AId>
<Date>10/31/2012</Date>
<Time>11:00 AM</Time>
<User>
<Employee>
<Name>Rosy</Name>
</Employee>
<Company>
<Customer>
<CustName>Williams</CustName>
<CustPhone>1232322</CustPhone>
</Customer>
</Company>
</User>
</Details>
<Details>
<AId>2</AId>
<Date>10/31/2012</Date>
<Time>11:30 AM</Time>
<User>
<Employee>
<Name>Mary</Name>
</Employee>
<Company>
<Customer>
<CustName>Christopher</CustName>
<CustPhone>123233323</CustPhone>
</Customer>
</Company>
</User>
</Details>
</List>
如何获取所有XML标记中的所有元素?
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {
if([elementName isEqualToString:@"AList"])
{
arr=[[NSMutableArray alloc] init];
}
if([elementName isEqualToString:@"Details"]||[elementName isEqualToString:@"User"])
{
drr=[[NSMutableDictionary alloc] init];
}
srr=[[NSMutableString alloc] init];
}
-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
[srr appendString:string];
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
if([elementName isEqualToString:@"AId"])
{
[drr setObject:srr forKey:@"AId"];
[srr release],srr=nil;
return;
}
if([elementName isEqualToString:@"Date"])
{
[drr setObject:srr forKey:@"Date"];
[srr release],srr=nil;
return;
}
if([elementName isEqualToString:@"Time"])
{
[drr setObject:srr forKey:@"Time"];
[srr release],srr=nil;
return;
}
if([elementName isEqualToString:@"Name"])
{
[drr setObject:srr forKey:@"Name"];
[srr release],srr=nil;
return;
}
if([elementName isEqualToString:@"CustName"])
{
[drr setObject:srr forKey:@"CustName"];
[srr release],srr=nil;
return;
}
if([elementName isEqualToString:@"CustPhone"])
{
[arr addObject:drr];
}
if([elementName isEqualToString:@"AList"])
{
[drr release];
}
[srr release],srr=nil;
}
我怎么能得到它......无法理解我哪里出错......
答案 0 :(得分:0)
你在DidEndElement方法中使用以下代码它会帮助你......
-(void)parser:(NSXMLParser*)parser
didEndElement:(NSString*)elementName
namespaceURI:(NSString*)namespaceURI
qualifiedName:(NSString*)qualifiedName
{
if ([elementName isEqualToString:@"list"]) {
return;
}
else if ([elementName isEqualToString:@"Details"]){
[yourarray addObject:yourDictionary];
}
else{
if (currentElementValue.length>0) {
[yourDictionary setObject:currentElementValue forKey:elementName];
currentElementValue = nil;
NSLog(@"this is the offer details---%@",[yourDictionary description]);
}
}
}
-(void)parser:(NSXMLParser*)parser
foundCharacters:(NSString*)string
{
currentElementValue=[NSString stringWithString:[string stringByTrimmingCharactersInSet:[NSCharacterSet newlineCharacterSet]]];
}
- (void)parser:(NSXMLParser *)parser foundCDATA:(NSData *)CDATABlock
{
currentElementValue = [[NSMutableString alloc] initWithData:CDATABlock encoding:NSUTF8StringEncoding];
}