使用NSXMLParser在iPhone中解析具有相同名称属性的XML文件?
我正在创建一个iPhone应用程序,我必须使用服务url中的值。url的响应是XML格式.XML文件具有多次相同的名称属性,并且这些属性不是静态的。我的意思是属性可能会不时增加。所以我无法理解如何在iPhone中使用该XML响应。使用NSXMLParser在iPhone中解析具有相同名称属性的XML文件?
我的XML响应如下所示:
GetUserResponse xmlns="http://schemas.datacontract.org/2004/07"
xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> <CompanyList> <User> <Address> <City>Alabaster</City> <State>Alabama</State> </Address> <Employee> <Name>DrJohn</Name> </Employee> </User> <User> <Address> <City>SanFransisco</City>> <State>California</State> </Address> <Employee> <Name>DrWilliams</Name> </Employee> </User> </CompanyList> </GetUserResponse>
的事情是我不能说会有的标签的特定数量2个标签的here.They可能会或可能不时增加。我认为我们应该采取像计数数量的项目和提取的价值,但不明白如何?
这是许多方法之一。您可以简单地获取attributeDict并使用键值解析其中的所有值。
NSString *element;
- (void) viewDidLoad {
[super viewDidLoad];
cityArr = [[NSMutableArray alloc] init];
}
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {
element = elementName;
if ([elementName isEqualToString:@“Address”]) {
// initialize stings to store values of child elements
cityStr = [NSMutableString alloc] init];
}
}
-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
if ([element isEqualToString:@“City”])
cityStr appendString:string];// Append Values
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
if ([elementName isEqualToString:@“Address”]) {
[cityArr addObject:cityStr]; // Add strings to array/dictionary and release string
}
}
可以请你告诉我如何初始化字符串,如何将数值附加到数组.. ..因为我是移动平台的新手,我无法理解任何东西.... – cutiepie
哦,我很抱歉..我会更新我的答案.. – Nina
嘿如果,如果我想要消费Line1标签?这是代码Iam writing ..didStartElement {if([elementName isEqualToString:@“Address”]){cityStr = [[NSMutableString alloc] init]; line1Str = [[NSMutableString alloc] init];如果([element isEqualToString:@“Line1”]){[line1Str appendString:string];} didEndElement {if([elementName isEqualToString:@“Address”]){[cityArr addObject:cityStr]; [line1Arr addObject:line1Str];} NSLog(@“%@”,cityArr); NSLog(@“%@”,line1Str) ;。这里line1Arr打印空值。 – cutiepie
可以在下面的链接可以帮助你 [http://*.com/questions/12471774/cant-retrieve-xml-values-using-nsxmlparser/12472090#12472090][1] [1]:http://*.com/questions/12471774/cant-retrieve-xml-values-using-nsxmlparser/12472090#12472090 –
在上面的XML中的每个标签是不同的,那么是什么问题? –
我确实有两个标签,并且必须消耗它们的值。并且标签的编号可能会增加....我应该将它们放入数组还是....? –
cutiepie