Cocoa / Obj-C - Подсчет элементов в файле XML - PullRequest
0 голосов
/ 16 марта 2011

Получил приложение, которое прочитало некоторую информацию в определенном XML-файле. Я хотел бы добавить еще один вариант, вот описание:

Вот пример моего файла типа XML:

<?xml version="1.0" ?>
<Report>
    <ReportCreationDate>20110307162840</ReportCreationDate>
    <ReportTitle>Title sample</ReportTitle>
    <ReportDescription>Description sample</ReportDescription>
    <Videos>
        <Video>
            <VideoTitle>Video 1</VideoTitle>
            <VideoDescription>Video description sample</VideoDescription>
        </Video>
        <Video>
            <VideoTitle>Video 2</VideoTitle>
            <VideoDescription>Video description sample</VideoDescription>
        </Video>
    </Videos>
</Report>

Я бы хотел посчитать, сколько <Video> элементов имеется в узле <Videos>.
Для этого примера это 2

Как я могу это сделать? Используя NSXMLDocument?

Я хотел бы написать результат в TextField.

Пример:
XML-файл содержит 5 видео.


Если кто-то может помочь, было бы здорово!
Заранее спасибо
Miskia
(и извините за мой плохой английский, я француженка: p)

1 Ответ

2 голосов
/ 16 марта 2011

Примерно так должно получиться. Я оставлю обработку ошибок на ваше усмотрение.

NSData *data = [NSData dataWithContentsOfFile:pathToYourXMLFile];

NSError *error = nil;

NSXMLDocument *document = [[NSXMLDocument alloc] initWithData:data options:0 error:&error];

if(!error)
{   
    NSXMLElement *rootElement = [document rootElement];

    NSUInteger count = [[rootElement nodesForXPath:@"//Video" error:&error] count];

    if(!error)
    {
        NSString *videosCount = nil;

        if(count == 0)
            videosCount = [NSString stringWithFormat:@"XML file contains no videos."];
        else if(count == 1)
            videosCount = [NSString stringWithFormat:@"XML file contains 1 video."];
        else
            videosCount = [NSString stringWithFormat:@"XML file contains %d videos.", count];

        [myTextField setStringValue:videosCount];
    }
}

[document release]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...