cz-sjm 发表于 2017-3-30 10:08:23

NSXMLParser解析php的xml

// parser  xml
解析xml需要NSXMLParserDelegate 协议,然后再实现类中完成重写parser等方法
NSAutoreleasePool这个一定要有,不然会报错
一定要记得,在分析XML的时候,xml格式是如下的话,是从item开始读取,而不是aaa表节点,不然只读取依次循环就没有了。
<item>
   <aaa>
         <tt>  fsdfs</tt>
         <bb>fsdlkfjkls</bb>
   </aaa>
  <aaa>
         <tt>  fdsfds</tt>
         <bb>fwefwwe</bb>
   </aaa>
</item>


//interface  
#import <Foundation/Foundation.h>
@interface IVPaserXMLSingleton :NSObject<NSXMLParserDelegate> {
         NSMutableString *currentString;
         NSString  *currentElement;
}
@property  (nonatomic,retain)NSMutableString  *currentString;
@property  (nonatomic,retain)NSString       *currentElement;
-(void)getData:(NSString*)urlStr;
@end
 
 
 
//implements  class
#import "IVPaserXMLSingleton.h"
#import "UserInfo.h"
@implementation IVPaserXMLSingleton
@synthesize currentString,currentElement;
-(void)getData:(NSString*)urlStr
{
         [NSThread  detachNewThreadSelector:@selector(parserData:) toTarget:selfwithObject:[NSURLURLWithString:urlStr]];
}
-(void)parserData:(NSURL*)url
{
         NSAutoreleasePool *pool=[[NSAutoreleasePool  alloc]  init];
         NSXMLParser *parser=[[NSXMLParseralloc]  initWithContentsOfURL:url];
         setDelegate:self];
         setShouldProcessNamespaces:YES];
         setShouldReportNamespacePrefixes:YES];
         setShouldResolveExternalEntities:NO];
         parse];
         drain];
}
 
 
//start element
- (void)parser:(NSXMLParser*)parser didStartElement:(NSString*)elementName
  namespaceURI:(NSString*)namespaceURI qualifiedName:(NSString*)qName
         attributes:(NSDictionary*)attributeDict
{
         [currentElement release];
         currentElement=copy];
         //NSLog(qName);
         //NSLog(@"I Jus found  a start tag for%@",elementName);
     if([currentElement  isEqualToString:@"item"])
         {
              //NSLog(@"begin");
              //;
         }
         elseif([currentElementisEqualToString:@"UserInfo"])
         {
              self.currentString=[NSMutableString string];
         }
}
 
 
//found character
-(void)parser:(NSXMLParser*)parser foundCharacters:(NSString*)string
{
    if([currentElementisEqualToString:@"Id"]){
      //  ;
              // ;
         }
    elseif([currentElementisEqualToString:@"UserId"]) {
              // ;
              // ;
         }
         elseif([currentElementisEqualToString:@"Name"]) {
               [currentString  appendString:string];
              // ;
         }
         elseif([currentElement isEqualToString:@"Sex"])
         {
              // ;
              // ;
         }
         else  if([currentElement  isEqualToString:@"Age"])
         {
              //;
              //;
         }
}
 
 
//parser over
-(void)parserDidEndDocument:(NSXMLParser*)parser
{
         NSLog(@"Document  finished!!!");
}
 
 
//end element
-(void)parser:(NSXMLParser*)parser didEndElement:(NSString*)elementName
  namespaceURI:(NSString*)namespaceURI qualifiedName:(NSString*)qName
{
         if(lementName  isEqualToString:@"Id"])
         {
         //   NSLog(currentString);
         }
         else if ([currentElement isEqualToString:@"UserId"]){
         //   NSLog(currentString);
         }
    else if (entElement isEqualToString:@"Name"]){
         //   NSLog(currentString);
         }
         else if(ntElement isEqualToString:@"Sex"])
         {
         //   NSLog(currentString);
         }
         else if(tElement  isEqualToString:@"Age"])
         {
              NSLog(currentString);
         }

@end
页: [1]
查看完整版本: NSXMLParser解析php的xml