2012-05-14 55 views
1

我正在使用NSXMLParser解析远程XML文件以在我的应用程序中显示信息。/n从XML解析数组

我将字符串存储在NSMutableArray中。这些信息以4个标签提供,其中重复了更多信息。

现在,我得到的形式像“/ n”“”索引的对象。 “realdata”,“/ n”,“realdata”

我试过使用Stringsbyreplacingoccurencesofstring函数,但似乎删除/ n并返回一个空索引。

请帮忙。

的代码:

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

    currentElement = elementName ; 


} 

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

    string1 = string; 
    string1 = [string1 stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@" \n\t"]]; 
} 

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

    if([currentElement isEqualToString:@"CourseID"]) 
    { 

     [CourseID addObject:string1]; 
    } 

    if([currentElement isEqualToString:@"CourseName"]) 
    { 
     [CourseName addObject:string1]; 

    } 
    if ([currentElement isEqualToString:@"CourseDescription"]) 
    { 
     [CourseDescription addObject:string1]; 
    } 
    if ([currentElement isEqualToString:@"DescriptionType"]) 
    { 
     [DescriptionType addObject:string1]; 

    } 

} 



- (void)parserDidEndDocument:(NSXMLParser *)parser{ 

    NSLog(@"Course Name: %@",CourseName); 
    NSLog(@"CourseID: %@",CourseID); 
    NSLog(@"CourseDescription: %@",CourseDescription); 
    NSLog(@"DescriptionType: %@",DescriptionType); 


} 

输出:

2012-05-15 04:03:09.011 DispatchTestPrep[2290:f803] Course Name: (
    "Weather Theory", 
    Turbulence, 
    "Non-Graphic Weather", 
    "Graphic Weather", 
    Airport 
) 
2012-05-15 04:03:09.012 DispatchTestPrep[2290:f803] CourseID: (
    1, 
    2, 
    3, 
    4, 
    5 
) 
2012-05-15 04:03:09.012 DispatchTestPrep[2290:f803] CourseDescription: (
    "Aviation Weather Theory", 
    Turbulence, 
    "Non-Graphic Weather", 
    "Graphic Weather", 
    Airport 
) 
2012-05-15 04:03:09.012 DispatchTestPrep[2290:f803] DescriptionType: (
    Text, 
    "", 
    Text, 
    "", 
    Text, 
    "", 
    Text, 
    "", 
    Text, 
    "", 
    "" 
) 

正如可以看到的最后一个 “DescriptionType” 阵列被示出在索引那些空对象。

正在解析XML文件是:

<NewDataSet><Table><CourseID>1</CourseID><CourseName>Weather Theory</CourseName><CourseDescription>Aviation Weather Theory</CourseDescription><DescriptionType>Text</DescriptionType></Table><Table><CourseID>2</CourseID><CourseName>Turbulence</CourseName><CourseDescription>Turbulence</CourseDescription><DescriptionType>Text</DescriptionType></Table><Table><CourseID>3</CourseID><CourseName>Non-Graphic Weather</CourseName><CourseDescription>Non-Graphic Weather</CourseDescription><DescriptionType>Text</DescriptionType></Table><Table><CourseID>4</CourseID><CourseName>Graphic Weather</CourseName><CourseDescription>Graphic Weather</CourseDescription><DescriptionType>Text</DescriptionType></Table><Table><CourseID>5</CourseID><CourseName>Airspace & Airport</CourseName><CourseDescription>Airspace & Airport</CourseDescription><DescriptionType>Text</DescriptionType></Table></NewDataSet> 

回答

2

试试这个:

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string { 
string =[string stringByReplacingOccurrencesOfString:@"\t" withString:@""]; 
string =[string stringByReplacingOccurrencesOfString:@"\n" withString:@""]; 
if(!currentElement) 
    currentElement = [[NSMutableString alloc] initWithString:string]; 
else 
    [currentElement appendString:string]; 

}

+0

appendString不适用于NSString的数据类型。 – NSFeaster

+0

将currentElement的数据类型,NSString更改为NSMutableString – Hector

+0

感谢您的逻辑!有用! – NSFeaster