`

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 :self withObject :[NSURL URLWithString :urlStr]];

}

-(void )parserData:(NSURL *)url

{

         NSAutoreleasePool   *pool=[[NSAutoreleasePool   alloc ]  init ];

         NSXMLParser   *parser=[[NSXMLParser alloc ]  initWithContentsOfURL :url];

         [parser  setDelegate :self ];

         [parser  setShouldProcessNamespaces :YES ];

         [parser  setShouldReportNamespacePrefixes :YES ];

         [parser  setShouldResolveExternalEntities :NO ];

         [parser  parse ];

         [pool  drain ];

}

 

 

//start  element

- (void )parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName

  namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName

         attributes:(NSDictionary *)attributeDict

{

         [currentElement   release ];

         currentElement =[elementName  copy ];

         //NSLog(qName);

         //NSLog(@"I Jus  found  a start tag for %@",elementName);

         if ([currentElement   isEqualToString :@"item" ])

         {

              //NSLog(@"begin");

              //[self  performSelectorOnMainThread:@selector(create) withObject:nil waitUntilDone:YES];

         }

         else if ([currentElement isEqualToString :@"UserInfo" ])

         {

              self .currentString =[NSMutableString   string ];

         }

}

 

 

//found  character

-(void )parser:(NSXMLParser *)parser foundCharacters:(NSString *)string

{

    if ([currentElement isEqualToString :@"Id" ]){

      //   [currentString  appendString:string];

              // [currentString  appendString:@"   "];

         }

    else if ([currentElement isEqualToString :@"UserId" ]) {

              // [currentString  appendString:string];

              // [currentString  appendString:@"   "];

         }

         else if ([currentElement isEqualToString :@"Name" ]) {

                [currentString   appendString :string];

              // [currentString  appendString:@"   "];

         }

         else if ([currentElement   isEqualToString :@"Sex" ])

         {

              // [currentString  appendString:string];

              // [currentString  appendString:@"   "];

         }

         else   if ([currentElement   isEqualToString :@"Age" ])

         {

              //[currentString  appendString:string];

              //[currentString  appendString:@"   "];

         }

}

 

 

//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([elementName  isEqualToStr ing:@"Id" ])

         {

         //   NSLog(curr entString);

         }

         else if ([ currentElement isEqualToString :@"UserId"]) {

         //   NSLog(current String);

         }

    else if ([currentElement isEqualToStri ng:@"Name "]) {

         //   NSLog(cur rentString);

         }

         else if ([currentElement  isEqualToStri ng:@"Sex" ])

         {

         //   NSLog(cur rentString);

         }

         else if ([currentElem ent  isEqualTo String:@"Age"])

         {

              NSL og(currentString) ;

         }

} 

@end

分享到:
评论

相关推荐

    使用NSXMLParser解析XML数据

    本示例("XMLParserDemo")将深入探讨如何使用`NSXMLParser`进行XML解析。 `NSXMLParser`是Apple的Foundation框架的一部分,它提供了一个事件驱动的解析模型。这意味着在解析过程中,每当解析器遇到XML文档中的特定...

    NSXMLParser解析XML

    6. **其他XML解析库**: - 虽然`NSXMLParser`是原生的解决方案,但还有其他第三方库如`libxml2`(通过`GDataXMLNode`封装)和`KissXML`提供更高级的功能和性能优化。 在实际应用中,了解`NSXMLParser`的工作原理并...

    ios xml解析 NSXMLParser

    ios xml解析 NSXMLParser。 NSXMLParser是基于SAX的解析方式。NSXMLParser采用了委托设计模式,因此他的实现类需要采用协议并支持委托。NSXMLParser解析XML需要委托NSXMLParserDelegate实现。

    IOS解析XML文件

    NSXMLParser是苹果提供的原生XML解析器,基于事件驱动模型,适合处理大型XML文件,因为它不需要一次性加载整个文件到内存。而GDataXMLNode库(基于libxml2)提供了一个更面向对象的方法,对于小型XML文件,它的使用...

    ios 简单xml解析DEMO绝对可用

    苹果提供了`NSXMLParser`类,这是一个基于事件驱动的XML解析器,适用于小型XML文档。下面我们将详细介绍如何使用`NSXMLParser`来解析XML数据。 1. **创建XML解析器实例** 首先,你需要创建一个`NSXMLParser`实例,...

    ios小程序--解析xml文件,读取新闻

    NSXMLParser是Apple提供的原生XML解析器,它提供了一个事件驱动的接口来处理XML文档。以下是如何使用NSXMLParser解析XML的步骤: 1. 创建一个NSXMLParser对象,传入XML数据源。 2. 实现NSXMLParserDelegate协议,...

    ios应用源码之对xml文件的解析与导出数据存储在xml中(代码)xmlparser 2018127

    这里我们主要关注`NSXMLParser`,它是Apple提供的原生XML解析器。 - `NSXMLParser`使用事件驱动的解析模型,当解析到XML文件中的特定节点时,会触发相应的代理方法。开发者需要实现这些方法来处理解析过程中的数据...

    OC中JSON或XML解析

    在提供的压缩包"JSON或XML解析"中,可能包含了详细的代码示例和教程,你可以通过学习这些资源进一步掌握OC中的JSON和XML解析技巧。实际操作中,理解数据结构和正确地处理错误是至关重要的。在实践中不断探索,你会...

    iphone开发之xml解析

    了解了基本的XML解析方法后,可以深入学习如何使用`NSXMLParser`或第三方库进行解析操作,例如设置解析器代理、处理XML节点事件、构建数据模型等。同时,掌握如何处理XML中的命名空间、实体引用、属性等特殊元素也是...

    ios-iOS xml解析.zip

    xml解析的两种常用方式, DOM解析:一次性将整个XML文档加载进内存,比较适合解析小文件,例如:GDataXml解析 SAX解析:从根元素开始,按顺序一个元素一个元素往下解析,比较适合解析大文件,例如:NSXMLParser解析

    ios中xml解析demo

    NSXMLParser是Apple提供的一个基于事件驱动的XML解析器。它逐行读取XML文档,遇到每个元素、属性或其他XML结构时都会触发相应的代理方法。开发者需要实现这些代理方法来处理XML数据。例如,`parser:didStartElement...

    AISHTTP发送请求,NSXML解析XML文件

    NSXMLParser是Apple提供的原生XML解析器,它可以逐行解析XML文档,通过代理方法提供事件驱动的解析体验。在解析过程中,我们可以监听如“元素开始”、“元素结束”、“字符数据”等事件,从而提取出需要的信息。 ``...

    iphone中XML解析例子

    本篇文章将深入探讨如何在iPhone应用中进行XML解析。 首先,我们需要了解在iOS中解析XML的两种主要方法:NSXMLParser和libxml2库。NSXMLParser是Apple提供的一种基于事件驱动的解析器,它会逐个处理XML文档的元素和...

    iphone NSXMLParser

    在iOS开发中,`NSXMLParser` 是一个用于解析XML文档的系统框架,它属于Foundation框架的一部分。XML(eXtensible Markup Language)是一种结构化数据格式,常用于存储和交换数据,尤其在网络通信和应用程序间的数据...

    iOS xml解析和json解析demo

    总结一下,这个"iOS xml解析和json解析demo"将涵盖如何在iOS应用中解析XML数据,包括使用NSXMLParser和XMLParser,以及如何解析和序列化JSON数据,包括使用内置的JSONSerialization类和可能涉及的一些第三方库。...

    xmlparsing-with-nsxmlparser-tutorial:使用NSXMLParser进行XMLParsing-教程

    本教程将深入探讨如何使用NSXMLParser进行XML解析,特别关注在iOS应用中实现这一过程的细节。 XML文档结构清晰,具有自解释性,可以包含元素、属性、注释、处理指令等。NSXMLParser通过事件驱动的模型来解析XML文档...

    ios xml解析

    此外,你提到的博客“ios xml解析”应该提供了TBXML的具体使用方法和常见问题解答,这将是你解决问题的重要资源。务必确保在使用TBXML时正确处理错误,例如,检查解析过程中是否出现网络错误、文件不存在等问题。 ...

    IOS应用源码——对xml文件的解析与导出数据存储在xml中(代码)xmlparser.zip

    iOS提供了两种主要的XML解析方式:NSXMLParser和XML.framework(包括libxml2库)。NSXMLParser是基于事件的解析器,它在解析过程中触发一系列的事件回调,如元素开始、结束、遇到属性等。而XML.framework则提供了更...

    IOS版本XML解析类

    原生的iOS SDK提供了一个叫做NSXMLParser的类来处理XML解析,但它的使用相对复杂,且对于大型或复杂的XML文档可能效率不高。因此,"IOS版本XML解析类"通常指的是第三方库,如GDataXML,这是一个在Objective-C中实现...

    iOS解析xml通用类

    首先,让我们了解一下XML解析的基本概念。XML是一种自描述性的标记语言,它通过标签(tag)来定义数据结构。解析XML文件是将XML数据转换为应用程序可以理解的形式的关键步骤。在iOS中,有多种解析XML的方法,如...

Global site tag (gtag.js) - Google Analytics