0
Я новичок в разработке iOS. Я хочу проанализировать мой массив веб-сервисов xml. Мой ответ XML, как,Как анализировать массив xml в iOS с помощью xmlParser
<BookList>
<Book>
<BookID>int</BookID>
<BookName>string</BookName>
<Pages>string</Pages>
<Price>string</Price>
</Book>
<Book>
<BookID>int</BookID>
<BookName>string</BookName>
<Pages>string</Pages>
<Price>string</Price>
</Book>
</BookList>
Вот код, я использую для анализа ответа,
-(void)connectionDidFinishLoading:(NSURLConnection *)connection {
NSString *theXML = [[NSString alloc] initWithBytes:
[self.webResponseData mutableBytes] length:[self.webResponseData length] encoding:NSUTF8StringEncoding];
//now parsing the xml
NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithData: self.webResponseData];
xmlParser.delegate = self;
// Run the parser
@try{
BOOL parsingResult = [xmlParser parse];
}
@catch (NSException* exception)
{
UIAlertView* alert = [[UIAlertView alloc]initWithTitle:@"Server Error" message:[exception reason] delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil];
[alert show];
return;
}
}
//Implement the NSXmlParserDelegate methods
-(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
{
// NSLog(@"String : %@", string);
if ([currentElement isEqualToString:@"BookID"]) {
NSLog(@"BookID : %@", string);
}else if ([currentElement isEqualToString:@"BookName"]) {
NSLog(@"BookName : %@", string);
}else if ([currentElement isEqualToString:@"Pages"]) {
NSLog(@"Pages : %@", string);
}else if ([currentElement isEqualToString:@"Price"]) {
NSLog(@"Price : %@", string);
}
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
// NSLog(@"Current Element: %@ ",currentElement);
}
Используя этот код можно просмотреть результаты, но я могу получить количество книг.
@Bkjadev Здесь я получаю счет как правильно, но когда я печатаю массив как, - (void) parserDidEndDocument: (NSXMLParser *) парсер {NSLog (@ "Количество подписчиков:% lu", (unsigned long) arrBook.count); NSLog (@ "Book Array:% @", arrBook); } Мой журнал похож: Количество подписчиков: 2 Книга: "; Pages =" "; Price =" ";}) - –
Удалить одну строку == [elementValue setString: @" "]; из функции didEndElement – BKjadav
Я изменил «[elementValue appendString: string];» to elementValue = строка; также также прокомментировал «[elementValue setString: @" "];". Теперь его Работа. Благодарю. –