XML-разбор проблемы с iphone - PullRequest
0 голосов
/ 21 мая 2011

Я использую NSXMLParser, однако я не совсем понимаю, как правильно отображать элементы из XML. Например. у меня есть это в парсере xml:

- (void) parser:(NSXMLParser *)parser
didStartElement:(NSString *)elementName
   namespaceURI:(NSString *)namespaceURI
  qualifiedName:(NSString *)qName
     attributes:(NSDictionary *)attributeDict
{
    if ([elementName isEqualToString:@"level4"]) {
        //add a book object to the array at the index determined by bookCount
        self.bookCount++;
        [books addObject:[[book alloc]init]];
        //[books insertObject:[[book alloc]init] atIndex:self.bookCount];
    }   
    if ([elementName isEqualToString:@"module"]) {
        isFirstName = YES;
    }
    if ([elementName isEqualToString:@"moduleTitle"]) {
        isLastName = YES;
    }
    if ([elementName isEqualToString:@"semester"]) {
        isTitle = YES;
    }
    if ([elementName isEqualToString:@"assessmentName"]) {
        isGenre = YES;
    }
}

Это мой 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>

(продолжается уровень 1, уровень2, уровень3 в том же формате). Я просто хочу отобразить все модули в иерархии 'level4' - как я могу это сделать? / Что я делаю не так? предметы отображаются просто не правильные ..

Ответы [ 2 ]

1 голос
/ 30 сентября 2011

Прежде всего, вам нужно создать один NSMutableDictionary.Когда вы получаете тэг в методе didStartElement, инициируйте этот словарь. И также установите один флаг.

И в методе «Найденный символ» проверьте этот флаг, если он затем сохранит этот tagValues, а в didEndElement сохранит все значения в этом словаре.когда вы найдете.

Вы можете найти значения всех уровней, используя это.Надеюсь, это поможет вам.

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

Используйте оба метода:

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict

и

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName

Для анализа.

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