2011-05-21 144 views
0

我正在使用NSXMLParser,但是我不太明白如何正確顯示xml中的項目。例如。我有這樣的XML解析器:xml解析iphone問題

- (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'層次下的所有模塊 - 我該怎麼做?/我在做什麼錯?該項目顯示只是沒有合適的人..

+0

可能的[在iPhone上解析XML的最佳方法]的副本(http://stackoverflow.com/questions/842292/best-approach-for-xml-parsing-on-the-iphone)或[Simple XML Parsing ](http://stackoverflow.com/questions/3395237/simple-xml-parsing)或[在iPhone上解析XML代碼](http://stackoverflow.com/questions/3616447/parsing-xml-code-on-iphone -sdk)或[在Cocoa中解析XML](http://stackoverflow.com/questions/1089737/parsing-xml-in-cocoa)或[iPhone上的NSXMLParser如何使用它?](http:// stackoverflow。 COM /問題/ 2964503 /)。拿你的選擇。 – 2011-05-21 17:05:46

回答

0

使用這兩種方法:

- (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

爲了解析。

+0

仍然不回答我的問題,它爲什麼只讀取最後一個元素..我怎樣才能只讀元素從 user763917 2011-05-21 12:11:22

1

首先你必須創建一個NSMutableDictionary。當您在didStartElement方法中獲取標籤時,啓動此Dictionary.And並設置一個標誌。

並在Found字符方法檢查該標誌,如果它然後存儲該tagValues並在didEndElement中存儲此字典中的所有值,當您找到。

您可以使用它找到所有級別的值。 希望這會幫助你。