/n从XML解析数组
问题描述:
我正在使用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>
答
试试这个:
- (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];
}
appendString不适用于NSString的数据类型。 – NSFeaster
将currentElement的数据类型,NSString更改为NSMutableString – Hector
感谢您的逻辑!有用! – NSFeaster