Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
xml解析iphone问题_Iphone_Objective C_Xml_Ipad_Ios4 - Fatal编程技术网

xml解析iphone问题

xml解析iphone问题,iphone,objective-c,xml,ipad,ios4,Iphone,Objective C,Xml,Ipad,Ios4,我正在使用NSXMLParser,但是我不太明白如何正确显示xml中的项。例如,我在xml解析器中有: - (void) parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict

我正在使用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>

移动和网络计算
ECSC401
编程方法
15
1.
测试1
作业
30
作业
作业
40
测试2
作业
30
(它使用相同的格式继续级别1、级别2、级别3)。我只想显示“level4”层次结构下的所有模块-我怎么做?/我做错了什么?显示的项目不是正确的项目。

使用两种方法:

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

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


用于解析。

首先,您必须创建一个NSMutableDictionary。当您在didStartElement方法中获得标记时,启动此字典。并设置一个标志

在find character方法中检查该标志,如果是,则存储该标记值,并在查找时在didEndElement中存储该字典中的所有值

使用此选项可以找到所有级别的值。
希望这能对您有所帮助。

仍然无法回答我的问题,为什么它只读取最后一个元素。。以及如何从只读元素到或的可能副本。你挑吧。