NSXMLParsing。与同一节点名称和不同的属性值

问题描述:

我想分析如下XML iOS中..我怎样才能做到这一点解析XML ..NSXMLParsing。与同一节点名称和不同的属性值

<RESULTS> 
    <ROW> 
     <COLUMN NAME="NAME">TEST1</COLUMN> 
     <COLUMN NAME="PHONE">4642664</COLUMN> 
     <COLUMN NAME="REMARKS"></COLUMN> 
     <COLUMN NAME="XCOORD_DMS">238558.000038</COLUMN> 
     <COLUMN NAME="YCOORD_DMS">381414.999953</COLUMN> 
     <COLUMN NAME="XCOORD_WGS">51.59917692</COLUMN> 
     <COLUMN NAME="YCOORD_WGS">25.18448963</COLUMN> 
    </ROW> 
    <ROW> 
     <COLUMN NAME="NAME">TEST2</COLUMN> 
     <COLUMN NAME="PHONE">4441303</COLUMN> 
     <COLUMN NAME="REMARKS">تسجيل - ترخيص</COLUMN> 
     <COLUMN NAME="XCOORD_DMS">231930.999982</COLUMN> 
     <COLUMN NAME="YCOORD_DMS">392650.000114</COLUMN> 
     <COLUMN NAME="XCOORD_WGS">51.53369833</COLUMN> 
     <COLUMN NAME="YCOORD_WGS">25.28606306</COLUMN> 
    </ROW> 
</RESULTS> 

感谢

+0

正如你已经猜到,你可以用'NSXMLParser'。你有什么问题? – user1118321 2012-07-30 18:05:15

+0

你尝试过的'NSXMLParser'代码在哪里?你是否遇到过'تسجيل - ترخيص'的unicode问题?否则,我会投票结束这个问题。 – Joe 2012-07-30 18:10:37

+0

与unicode问题没有概率..我面临问题获取COLUMN标记内的数据。例如,我需要使用SMXMLDocument .. 4441303 .. im中的电话号码,他们使用NSXMLPArser – Pras 2012-07-30 18:23:17

下面是解析器我写..

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName 
    namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName 
    attributes:(NSDictionary *)attributeDict { 

    if([elementName isEqualToString:@"RESULTS"]) { 
     //Initialize the array. 
     //appDelegate.maps = [[NSMutableArray alloc] init]; 
    } 
    else if([elementName isEqualToString:@"COLUMN"]) { 

     //Initialize the book. 
     amaps = [[MapDetails alloc] init]; 

     dict = [[NSDictionary alloc] initWithDictionary:attributeDict]; 
     if ([[attributeDict objectForKey:@"NAME"] isEqualToString:@"NAME"]) { 
     } 

    } 
} 

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string 
{ 

    str123=[NSString stringWithFormat:@"%@",string]; 

} 
// this delegate method is called if an error occurs in locating your current location 
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error { 

    NSLog(@"STEP 3: Failed!!! Finding location : %@ ", error); 
    if (kCLErrorDenied) { 
    } else { 
     // We handle all non-CoreLocation errors here 
    } 
} 

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName 
    namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName { 

    if([elementName isEqualToString:@"RESULTS"]) 
     return; 
    if([elementName isEqualToString:@"COLUMN"]) 
    { 

     amaps.NAME = [NSString stringWithString:str123]; 

     NSLog(@"%@",amaps.NAME); 
     if ([[dict objectForKey:@"NAME"] isEqualToString:@"NAME"]) { 

      [arrName addObject:[NSString stringWithFormat:@"%@",amaps.NAME]]; 

      NSLog(@"arr %@",arrName); 

     } 
     if ([[dict objectForKey:@"NAME"] isEqualToString:@"ANAME"]) { 

      [arrArabName addObject:[NSString stringWithFormat:@"%@",amaps.NAME]]; 

      NSLog(@"arr %@",arrArabName); 

     } 
     if ([[dict objectForKey:@"NAME"] isEqualToString:@"YCOORD_WGS"]) { 
      [arrLatitude addObject:[NSString stringWithFormat:@"%@",amaps.NAME]]; 
      NSLog(@"arr %@",arrLatitude); 
     } 
     if ([[dict objectForKey:@"NAME"] isEqualToString:@"XCOORD_WGS"]) { 
      [arrLongitude addObject:[NSString stringWithFormat:@"%@",amaps.NAME]]; 
      NSLog(@"arr %@",arrLongitude); 
     } 


    } 

}