NSXMLParser в iPad XCode

Я пытаюсь получить данные из 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>

И я создал два класса Entity:

Модуль.h

@interface Module : NSObject {

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

}

Деталь оценки.h

@interface AssessmentDetail : NSObject {

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

}

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

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

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


person Sandeep Bansal    schedule 20.05.2011    source источник


Ответы (3)


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

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

Сандро Мейер

person Sandro Meier    schedule 20.05.2011
comment
Только что попробовал, и это кажется очень хорошим, спасибо за помощь, теперь я наконец-то добрался до чего-то. - person Sandeep Bansal; 20.05.2011
comment
Пожалуйста! Пришлось делать что-то знакомое. Для этого типа вкуса TBXML действительно лучший... - person Sandro Meier; 20.05.2011

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

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

person elp    schedule 20.05.2011

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

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

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

person Mr. Berna    schedule 20.05.2011