我需要解析在這類XML的多個元件(ID1和ID2):解析在目標c XML的多個元素
<name> <id1>104634449</id2> <id2>22014870</id2> </name> <name> <id1>104634433</id2> <id2></id2> </name>
我使用這樣的代碼:
-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI: (NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{
isName = [elementName isEqualToString:@"name"];
isId1 = [elementName isEqualToString:@"id1"];
isId2 = [elementName isEqualToString:@"id2"];
if(isName){
name = [Name new];
}
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
if (isName){
[names addObject:name];
}
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
if (isId1){
[name setId1:string];
}
if (isId2){
[name setId2:string];
}
}
但在對象名稱中只設置了一個元素(id1或id2)。我做錯了什麼?
在調試我得到這個: ID1 = @「\ n」 ID2 = @「22014870」
好惡。這僅僅是libxml2的一個包裝,它是一個更快,更強大,功能更豐富的版本。花時間在建議執行速度較慢的補丁作業之前瞭解內置庫的工作原理。僅僅因爲它的名稱'Google'並不意味着它更好,例如,GData不支持複雜XPath查詢(返回字符串或節點以外的類型),而本機libxml2則支持這種查詢。 –
理查德不錯,包裝有時非常受歡迎。我通常更喜歡在出現性能問題時處理,而不是花時間過早地優化。我還沒有遇到任何性能問題,但仍然使用它來滿足我的需求。當然,「Google」並不立即意味着更好,「考慮」將是比「強烈推薦」更好的單詞選擇。 –