IPhone之NSXMLParser的使用
首先,NSXMLParser必须继续NSXMLParserDelegate协议
@interface XMLHelper : NSObject<NSXMLParserDelegate>
首先设置XML数据,并初始化NSXMLParser
- (void)viewDidLoad { NSMutableString *Strxml=[NSMutableStringstringWithString:@"<Body><xml1>11111111</xml1><xml2><xml3>3333333333</xml3></xml2></Body>"]; NSData *data=[NSData dataWithBytes:[Strxml UTF8String]length:[Strxml length]];
[parser setShouldProcessNamespaces:NO]; [parser setShouldReportNamespacePrefixes:NO]; [parser setShouldResolveExternalEntities:NO];
[parser parse]; [super viewDidLoad]; } |
//遍例xml的节点
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString*)elementName namespaceURI:(NSString *)namespaceURIqualifiedName:(NSString *)qName attributes:(NSDictionary*)attributeDict { NSLog(@"Name:%@",elementName); } |
//当xml节点有值时,则进入此句
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString*)string { NSLog(@"Value:%@",string); } |
//当遇到结束标记时,进入此句
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString*)elementName namespaceURI:(NSString *)namespaceURIqualifiedName:(NSString *)qName {
|
//解析放生错误时进入此语句
- (void)parser:(NSXMLParser*)parser parseErrorOccurred:(NSError*)parseError{
错误带好说明
typedef enum _NSXMLParserError
{
NSXMLParserInternalError=1,
NSXMLParserOutOfMemoryError=2,
NSXMLParserDocumentStartError=3,
NSXMLParserEmptyDocumentError=4,
NSXMLParserPrematureDocumentEndError=5,
NSXMLParserInvalidHexCharacterRefError=6,
NSXMLParserInvalidDecimalCharacterRefError=7,
NSXMLParserInvalidCharacterRefError=8,
NSXMLParserInvalidCharacterError=9,
NSXMLParserCharacterRefAtEOFError,
NSXMLParserCharacterRefInPrologError=11,
NSXMLParserCharacterRefInEpilogError,
NSXMLParserCharacterRefInDTDError=13,
NSXMLParserEntityRefAtEOFError,
NSXMLParserEntityRefInPrologError,
NSXMLParserEntityRefInEpilogError=16,
NSXMLParserEntityRefInDTDError,
NSXMLParserParsedEntityRefAtEOFError,
NSXMLParserParsedEntityRefInPrologError,
NSXMLParserParsedEntityRefInEpilogError=20,
NSXMLParserParsedEntityRefInInternalSubsetError,
NSXMLParserEntityReferenceWithoutNameError,
NSXMLParserEntityReferenceMissingSemiError=23,
NSXMLParserParsedEntityRefNoNameError,
NSXMLParserParsedEntityRefMissingSemiError,
NSXMLParserUndeclaredEntityError,
NSXMLParserUnparsedEntityError=27,
NSXMLParserEntityIsExternalError,
NSXMLParserEntityIsParameterError,
NSXMLParserUnknownEncodingError=30,
NSXMLParserEncodingNotSupportedError,
NSXMLParserStringNotStartedError,
NSXMLParserStringNotClosedError,
NSXMLParserNamespaceDeclarationError=34,
NSXMLParserEntityNotStartedError,
NSXMLParserEntityNotFinishedError,
NSXMLParserLessThanSymbolInAttributeError=37,
NSXMLParserAttributeNotStartedError,
NSXMLParserAttributeNotFinishedError,
NSXMLParserAttributeHasNoValueError=40,
NSXMLParserAttributeRedefinedError,
NSXMLParserLiteralNotStartedError,
NSXMLParserLiteralNotFinishedError,
NSXMLParserCommentNotFinishedError=44,
NSXMLParserProcessingInstructionNotStartedError,
NSXMLParserProcessingInstructionNotFinishedError,
NSXMLParserNotationNotStartedError,
NSXMLParserNotationNotFinishedError=48,
NSXMLParserAttributeListNotStartedError,
NSXMLParserAttributeListNotFinishedError,
NSXMLParserMixedContentDeclNotStartedError=51,
NSXMLParserMixedContentDeclNotFinishedError,
NSXMLParserElementContentDeclNotStartedError,
NSXMLParserElementContentDeclNotFinishedError,
NSXMLParserXMLDeclNotStartedError=55,
NSXMLParserXMLDeclNotFinishedError,
NSXMLParserConditionalSectionNotStartedError,
NSXMLParserConditionalSectionNotFinishedError,
NSXMLParserExternalSubsetNotFinishedError=59,
NSXMLParserDOCTYPEDeclNotFinishedError,
NSXMLParserMisplacedCDATAEndStringError,
NSXMLParserCDATANotFinishedError,
NSXMLParserMisplacedXMLDeclarationError=63,
NSXMLParserSpaceRequiredError,
NSXMLParserSeparatorRequiredError,
NSXMLParserNMTOKENRequiredError,
NSXMLParserNAMERequiredError,
NSXMLParserPCDATARequiredError=68,
NSXMLParserURIRequiredError,
NSXMLParserPublicIdentifierRequiredError,
NSXMLParserLTRequiredError,
NSXMLParserGTRequiredError,
NSXMLParserLTSlashRequiredError,
NSXMLParserEqualExpectedError,
NSXMLParserTagNameMismatchError,
NSXMLParserUnfinishedTagError,
NSXMLParserStandaloneValueError,
NSXMLParserInvalidEncodingNameError,
NSXMLParserCommentContainsDoubleHyphenError,
NSXMLParserInvalidEncodingError,
NSXMLParserExternalStandaloneEntityError,
NSXMLParserInvalidConditionalSectionError,
NSXMLParserEntityValueRequiredError,
NSXMLParserNotWellBalancedError,
NSXMLParserExtraContentError,
NSXMLParserInvalidCharacterInEntityError,
NSXMLParserParsedEntityRefInInternalError,
NSXMLParserEntityRefLoopError,
NSXMLParserEntityBoundaryError,
NSXMLParserInvalidURIError,
NSXMLParserURIFragmentError,
NSXMLParserNoDTDError,
NSXMLParserDelegateAbortedParseError=512
} NSXMLParserError;
}
xml节点特殊字符转换:
& --- & amp ;
< --- & lt ;
> --- & gt ;
' --- & apos ;
" --- & quot ;
标示遇到&使用&;代替,其他类似