0

初心者としてNSXMLParser、xml を解析するためのパーサーについて読み、実装しようとしました。

<?xml version="1.0" encoding="UTF-8"?>
<a>Some text here</a>

私の実装

-(OneNodeXMLParser*)initOneNodeXMLParser{

appDelegate = (OneNodeXMLParser*)[[UIApplication sharedApplication]delegate];
return self;
}

-(void)parser:(NSXMLParser*) parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{
NSLog(@"%s",__PRETTY_FUNCTION__,nil);
if([elementName isEqualToString:@"a"]){
   // init some varibles
}
NSLog(@"Starting processing");
}

-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
NSLog(@"%s",__PRETTY_FUNCTION__,nil);
NSLog(@"%s",string);
}

   -(void) parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{
NSLog(@"%s",__PRETTY_FUNCTION__,nil);
NSLog(@"Finishing processing");
}

ファイルを正常に解析するには、何を変更する必要がありますか?

4

1 に答える 1

1

あなたの.hファイルで宣言しますNSMutableString *store;

そして、次のような方法を変更します。

-(void)parser:(NSXMLParser*) parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
  if([elementName isEqualToString:@"a"])
  {
     store = [[NSMutableString alloc] init];
  }
  NSLog(@"Starting processing");
}

-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
  NSLog(@"%s",string);
   if (store != nil)
   {
     [store appendString:string];
   }
}

-(void) parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
 {
   NSLog(@"Finishing processing String : %@", store);
 }

その文字列変数storeは、将来の使用に使用できます。

于 2012-11-07T04:54:25.113 に答える