NSXMLParser в iPad XCode - PullRequest
       15

NSXMLParser в iPad XCode

0 голосов
/ 20 мая 2011

Я пытаюсь получить данные от NSXMLParser

У меня есть следующие данные XML:

<myCourse>
    <courseName>BEng Mobile and Web Computing</courseName>
    <courseStructure>
        <level4>
            <module>
                <moduleCode>ECSC401</moduleCode>
                <moduleTitle>Programming Methodology</moduleTitle>
                <credits>15</credits>
                <semester>1</semester>
                <assessmentDetails>
                    <assessment>
                        <assessmentName>Test1</assessmentName>
                        <assessmentType>Coursework</assessmentType>
                        <assessmentWeighting>30</assessmentWeighting>
                        <assessmentDueDate/>
                    </assessment>
                    <assessment>
                        <assessmentName>Coursework</assessmentName>
                        <assessmentType>Coursework</assessmentType>
                        <assessmentWeighting>40</assessmentWeighting>
                        <assessmentDueDate/>
                    </assessment>
                    <assessment>
                        <assessmentName>Test2</assessmentName>
                        <assessmentType>Coursework</assessmentType>
                        <assessmentWeighting>30</assessmentWeighting>
                        <assessmentDueDate/>
                    </assessment>
                </assessmentDetails>
            </module>
        </level4>
    </courseStructure>
</myCourse>

И я создал два класса сущностей:

module.h

@interface Module : NSObject {

    NSString *moduleCode;
    NSString *moduleTitle;
    NSString *credits;
    NSString *semester;

}

AssessmentDetail.h

@interface AssessmentDetail : NSObject {

    NSString *assessmentName;
    NSString *assessmentType;
    NSString *assessmentWeighting;
    NSString *assessmentDueDate;

}

Это все, что у меня есть на самом деле, я хотел бы иметь возможность анализировать данные XML в массив для реализации в UITableView.

Может кто-нибудь наставить меня или помочь мне простым способом на самом деле выводить данные?

Большое спасибо.

Ответы [ 3 ]

1 голос
/ 20 мая 2011

Вы действительно хотите использовать NSXMLParser?Если нет, я предлагаю использовать TBXML .Это действительно легко использовать, если вы знаете структуру вашего XML-файла.Начните с этой страницы, чтобы получить API: TBXML API

Если вы знакомы с Objective-c, этот XML-код будет проанализирован через полчаса.; -)

Сандро Мейер

0 голосов
/ 20 мая 2011

Очень простой в использовании NSXMLParser - это анализатор, управляемый событиями, что означает, что когда анализатор просматривает данные XML, он создает событие для каждого элемента, который находит анализатор. Эти события отправляются в виде сообщений делегату NSXMLParser. Этот делегат - это класс, который вы должны написать, который соответствует протоколу NSXMLParserDelegate.

Чтобы привести пример для этих данных XML, парсер отправит делегату сообщение parser:didStartElement:namespaceURI:qualifiedName:attributes: при обнаружении <assessmentName>, затем сообщение parser:foundCharacters: при обнаружении Test1, затем parser:didEndElement:namespaceURI:qualifiedName: при обнаружении </assessmentName>. Ваш объект делегата должен поддерживать информацию о состоянии. В сообщении didStartElement должно быть указано, что следующие символы должны быть сохранены в assessmentName объекте AssessmentDetail объекта.

Вашему делегату не нужно реализовывать все методы протокола NSXMLParserDelegate. Вы могли бы сойти с рук только этими тремя методами. Элемент didStartElement должен знать о десяти элементах, соответствующих двум вашим объектам данных и их иварам, и соответствующим образом изменять состояние, чтобы ваш метод parser:foundCharacters: поместил данные в правильный объект.

0 голосов
/ 20 мая 2011

Почему вы можете использовать простой парсер, такой как touchXml ?

Вы можете легко разобрать и настроить все ваши переменные / массив для передачи в вашу таблицу.

...