// 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
分享到:
相关推荐
本示例("XMLParserDemo")将深入探讨如何使用`NSXMLParser`进行XML解析。 `NSXMLParser`是Apple的Foundation框架的一部分,它提供了一个事件驱动的解析模型。这意味着在解析过程中,每当解析器遇到XML文档中的特定...
6. **其他XML解析库**: - 虽然`NSXMLParser`是原生的解决方案,但还有其他第三方库如`libxml2`(通过`GDataXMLNode`封装)和`KissXML`提供更高级的功能和性能优化。 在实际应用中,了解`NSXMLParser`的工作原理并...
ios xml解析 NSXMLParser。 NSXMLParser是基于SAX的解析方式。NSXMLParser采用了委托设计模式,因此他的实现类需要采用协议并支持委托。NSXMLParser解析XML需要委托NSXMLParserDelegate实现。
NSXMLParser是苹果提供的原生XML解析器,基于事件驱动模型,适合处理大型XML文件,因为它不需要一次性加载整个文件到内存。而GDataXMLNode库(基于libxml2)提供了一个更面向对象的方法,对于小型XML文件,它的使用...
苹果提供了`NSXMLParser`类,这是一个基于事件驱动的XML解析器,适用于小型XML文档。下面我们将详细介绍如何使用`NSXMLParser`来解析XML数据。 1. **创建XML解析器实例** 首先,你需要创建一个`NSXMLParser`实例,...
NSXMLParser是Apple提供的原生XML解析器,它提供了一个事件驱动的接口来处理XML文档。以下是如何使用NSXMLParser解析XML的步骤: 1. 创建一个NSXMLParser对象,传入XML数据源。 2. 实现NSXMLParserDelegate协议,...
这里我们主要关注`NSXMLParser`,它是Apple提供的原生XML解析器。 - `NSXMLParser`使用事件驱动的解析模型,当解析到XML文件中的特定节点时,会触发相应的代理方法。开发者需要实现这些方法来处理解析过程中的数据...
在提供的压缩包"JSON或XML解析"中,可能包含了详细的代码示例和教程,你可以通过学习这些资源进一步掌握OC中的JSON和XML解析技巧。实际操作中,理解数据结构和正确地处理错误是至关重要的。在实践中不断探索,你会...
了解了基本的XML解析方法后,可以深入学习如何使用`NSXMLParser`或第三方库进行解析操作,例如设置解析器代理、处理XML节点事件、构建数据模型等。同时,掌握如何处理XML中的命名空间、实体引用、属性等特殊元素也是...
xml解析的两种常用方式, DOM解析:一次性将整个XML文档加载进内存,比较适合解析小文件,例如:GDataXml解析 SAX解析:从根元素开始,按顺序一个元素一个元素往下解析,比较适合解析大文件,例如:NSXMLParser解析
NSXMLParser是Apple提供的一个基于事件驱动的XML解析器。它逐行读取XML文档,遇到每个元素、属性或其他XML结构时都会触发相应的代理方法。开发者需要实现这些代理方法来处理XML数据。例如,`parser:didStartElement...
NSXMLParser是Apple提供的原生XML解析器,它可以逐行解析XML文档,通过代理方法提供事件驱动的解析体验。在解析过程中,我们可以监听如“元素开始”、“元素结束”、“字符数据”等事件,从而提取出需要的信息。 ``...
本篇文章将深入探讨如何在iPhone应用中进行XML解析。 首先,我们需要了解在iOS中解析XML的两种主要方法:NSXMLParser和libxml2库。NSXMLParser是Apple提供的一种基于事件驱动的解析器,它会逐个处理XML文档的元素和...
在iOS开发中,`NSXMLParser` 是一个用于解析XML文档的系统框架,它属于Foundation框架的一部分。XML(eXtensible Markup Language)是一种结构化数据格式,常用于存储和交换数据,尤其在网络通信和应用程序间的数据...
总结一下,这个"iOS xml解析和json解析demo"将涵盖如何在iOS应用中解析XML数据,包括使用NSXMLParser和XMLParser,以及如何解析和序列化JSON数据,包括使用内置的JSONSerialization类和可能涉及的一些第三方库。...
本教程将深入探讨如何使用NSXMLParser进行XML解析,特别关注在iOS应用中实现这一过程的细节。 XML文档结构清晰,具有自解释性,可以包含元素、属性、注释、处理指令等。NSXMLParser通过事件驱动的模型来解析XML文档...
此外,你提到的博客“ios xml解析”应该提供了TBXML的具体使用方法和常见问题解答,这将是你解决问题的重要资源。务必确保在使用TBXML时正确处理错误,例如,检查解析过程中是否出现网络错误、文件不存在等问题。 ...
iOS提供了两种主要的XML解析方式:NSXMLParser和XML.framework(包括libxml2库)。NSXMLParser是基于事件的解析器,它在解析过程中触发一系列的事件回调,如元素开始、结束、遇到属性等。而XML.framework则提供了更...
原生的iOS SDK提供了一个叫做NSXMLParser的类来处理XML解析,但它的使用相对复杂,且对于大型或复杂的XML文档可能效率不高。因此,"IOS版本XML解析类"通常指的是第三方库,如GDataXML,这是一个在Objective-C中实现...
首先,让我们了解一下XML解析的基本概念。XML是一种自描述性的标记语言,它通过标签(tag)来定义数据结构。解析XML文件是将XML数据转换为应用程序可以理解的形式的关键步骤。在iOS中,有多种解析XML的方法,如...