Как проанализировать этот файл XML с помощью Objective C? - PullRequest
1 голос
/ 13 декабря 2011

У меня есть XML-файл следующей структуры:

<xmlDocument version="1">
<subject id="1">
<maths marks="65"/>
<science marks="80"/>
<tamil marks="90"/>
<social marks="79"/>
<English marks="70"/>
</subject>
</xmlDocument>

Как проанализировать и получить эти данные с помощью Objective C?

Ответы [ 3 ]

1 голос
/ 13 декабря 2011
  1. Создайте экземпляр NSXMLParser и назначьте делегат анализатору.
  2. В вашем классе делегатов реализуйте соответствующие методы протокола NSXMLParserDelegate.
  3. Вызвать метод парсера parse.
  4. Задайте более конкретные вопросы, если у вас возникнут проблемы.
0 голосов
/ 13 декабря 2011

Эта ссылка http://www.iphonedevsdk.com/forum/iphone-sdk-tutorials/76730-webservice-how.html действительно поможет вам.

0 голосов
/ 13 декабря 2011

Поскольку у вас нет текста внутри тегов, вы можете использовать метод parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName attributes:(NSDictionary *)attributeDict в своем делегате. Чем вы можете хранить значения внутри словаря или объекта. Если у вас есть несколько тегов subject, вы можете использовать parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName для изменения контекста вашего анализатора. Официальная документация должна содержать более подробную информацию о доступных методах.

Вы можете сделать что-то подобное (неполная реализация):

/*
 * Incomplete implementation just to give some pointers
 */
@implementation MyDelegate
    -(void) init {
        if((self = [super init])) {
            _subjects = [NSMutableArray new];
        }
    }
    -(void) parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName attributes:(NSDictionary *)attributeDict {
        if([elementName equalsIgnoreCase:@"subject"]) {
            _context = [NSMutableDictionary new];
        } else {
            [_context setObject:[attributeDict valueForKey:@"mark"] forKey:elementName];
        }
    }
    - (void) parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName {
        [_subjects addObject:_context]
        [_context release]; _context = nil;
    }
@end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...