2017-11-23 11 views
-1

私はそれを解析する必要があるxmlファイルを持っています。私はそれのためのYouTubeのチュートリアルに従っています。私は、テーブルビューコントローラのタグから解析されたデータを表示していますが、私はそこにデータが表示されていないアプリケーションを実行すると、テーブルビューコントローラは空です。ファイルを解析するための私のコードは、この、Objective cでXMLファイルを解析する

#import "QuestionParser.h" 
#import "Question.h" 
@interface QuestionParser() 
@property NSXMLParser *parser; 
@property NSString *element; 
@property NSString *currentxref; 
@property NSString *currenttext; 
@property NSString *currentprompt; 
@property NSString *currentexplanation; 
@property NSString *currenttext1; 

-(id)initWithArray:(NSMutableArray *)questionArray{ 

self = [super init]; 

if (self) { 
    self.questionArray = questionArray; 
} 

return self; 

}

-(void)parseFile{ 

NSURL *url= [[NSBundle mainBundle]URLForResource:@"test" withExtension:@"xml"]; 
self.parser = [[NSXMLParser alloc]initWithContentsOfURL:url]; 
self.parser.delegate=self; 

}

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary<NSString *,NSString *> *)attributeDict{ 
self.element = elementName; 

}

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{ 
if ([self.element isEqualToString:@"xref"]) { 
    self.currentxref = string; 
} 

else if ([self.element isEqualToString:@"text"]){ 
    self.currenttext = string; 
} 

else if ([self.element isEqualToString:@"prompt"]){ 
    self.currentprompt = string; 
} 

else if ([self.element isEqualToString:@"explanation"]){ 
    self.currentexplanation = string; 
} 

else if ([self.element isEqualToString:@"text"]){ 
    self.currenttext1 = string; 
} 

}

です
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{ 
if ([elementName isEqualToString:@"question"]) { 
    Question *ques= [[Question alloc]initWithName:_currentxref text:_currenttext prompt:_currentprompt explanation:_currentexplanation text1:_currenttext1]; 

    [self.questionArray addObject:ques]; 
} 
self.element = nil; 

}

iは、データソースのデータをロードしていどのこれは、

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 

{

return 1; 

}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 

{

return self.questionArray.count; 

}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

{

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath]; 

Question *ques=self.questionArray[indexPath.row]; 
cell.textLabel.text=ques.xref; 
cell.detailTextLabel.text = [NSString stringWithFormat:@"%@",ques.prompt]; 



return cell; 

}

マイXMLファイルは、これは、この方法は、完全なXML persing後に実行される、 enter image description here

+0

かは不明です。 XMLParsingは非同期です。それは終了しましたか?あなたのテーブルビューをリロードしますか? – Larme

+0

これは実際にはxmlで私の初めてのことです、私自身はこれをどうやって得ることができません。 @Larme – siddle

答えて

2

あります。このメソッドでは、テーブルビューのデータをリロードします。あなたが何かは、このチュートリアルに従ってくださいしたい場合は

-(void)parserDidEndDocument:(NSXMLParser *)parser{ 
    // When the parsing has been finished then simply reload the table view. 
[self.tableView reloadData]; 
} 

は:https://www.appcoda.com/parse-xml-and-json-web-service/

+0

Bro私は上記のファイルを解析する必要があります。私はこれで最初に私はQFタグの値を取得する必要があり、質問よりもcoonfuseですか? @Faysal Ahmed – siddle

+0

チュートリアルに続いて、Objective Cを使ってXMLを解析する方法を知ることができます。 –

+0

urutからxmlファイルを取得していますが、私のプロジェクトに追加したファイルがあります。そこから。 @Faysal Ahmed – siddle