Будучи сказанным, что я понимаю основной анализ XML-файлов с помощью NSXMLParser, у меня есть следующая ситуация, когда у меня есть несколько элементов <table_data>...</table_data>
, которые отличаются друг от друга значением определенного атрибута, поэтому , например:NSXMLParser didStartElement только с определенным атрибутом
<table_data attr="one">...</table_data>
<table_data attr="two">...</table_data>
<table_data attr="three">...</table_data>
в то время как в didStartElement, я хотел бы, что анализатор учитывает <table_data>
элемента в качестве начального элемента, только если он имеет attr="one"
.
Это означало бы, что в foundCharacters я мог получить только содержание детей элементов <table_data attr="one">
но не <table_data attr="two">
, <table_data attr="three">
и т.д.
К настоящему времени, я стараюсь это:
- (void)parser:(NSXMLParser*)parser didStartElement:(NSString *)elementName namespaceURI:(NSString*)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary*)attributeDict {
elementoCorrente = [elementName copy];
if ([elementName isEqualToString:@"table_data"]) {
if ([[attributeDict objectForKey:@"attr"] isEqualToString:@"one"]) {
stringDesc = [[NSMutableString alloc] init];
}
}
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
if ([elementoCorrente isEqualToString:@"field"]) {
[stringDesc appendString:string];
NSLog(@"%@",string);
}
}
Но что Я получаю журнал содержимого элемента <field>
, дочернего из всех <table_data>
. Есть ли способ распечатать только содержимое элемента <field>
, если дочерний элемент <table_data attr="one">
? Благодаря Фабио
Это, на мой взгляд, правильный ответ. И невероятно, насколько это было легко. Позор мне ... Большое спасибо Робу, который потратил время, чтобы предоставить мне рабочий код тоже :) Кроме того, ответ Хелдердароча - работающий и хороший, благодаря вам обоим, я могу продолжить! –