// // NSXMLDocument.m // Foundation // // Created by H. Nikolaus Schaller on 28.03.08. // Copyright 2008 Golden Delicious Computers GmbH&Co. KG. All rights reserved. // #import @implementation NSXMLDocument + (Class) replacementClassForClass:(Class) class; { return Nil; } - (NSString *) characterEncoding; { return _characterEncoding; } - (void) dealloc; { [_characterEncoding release]; [_DTD release]; [_MIMEType release]; [_version release]; [super dealloc]; } - (NSXMLDocumentContentKind) documentContentKind; { return _documentContentKind; } - (NSXMLDTD *) DTD; { return _DTD; } - (id) initWithContentsOfURL:(NSURL *) url options:(NSUInteger) optsMask error:(NSError **) err; { NSData *data=[NSData dataWithContentsOfURL:url options:optsMask error:err]; if(!data) { [self release]; return nil; } return [self initWithData:data options:optsMask error:err]; } - (id) initWithXMLString:(NSString *) str options:(NSUInteger) optsMask error:(NSError **) err; { // FIXME - we must set the encoding to UTF-8 *before* we try to parse! // i.e. should we check the 0) [self removeChildAtIndex:0]; [self addChild:rootNode]; } - (void) setStandalone:(BOOL) flag; { _isStandalone=flag; } - (void) setVersion:(NSString *) version; { ASSIGN(_version, version); } - (BOOL) validateAndReturnError:(NSError **) err; { NIMP; // should check DTD return YES; } - (NSString *) version; { return _version; } - (NSData *) XMLData; { return [self XMLDataWithOptions:NSXMLNodeOptionsNone]; } - (NSData *) _XMLDataWithOptions:(NSUInteger) opts format:(NSUInteger) fmt { NSString *str=nil; switch(_documentContentKind) { case NSXMLDocumentTextKind: // collect all nodes into single text string and ignore all tags break; case NSXMLDocumentXMLKind: case NSXMLDocumentXHTMLKind: case NSXMLDocumentHTMLKind: // how can we pass down opts&NSXMLDocumentIncludeContentTypeDeclaration and documentKind? str=[[self rootElement] XMLStringWithOptions:opts]; } // handle characterEncoding - use UTF8 if unknown return [str dataUsingEncoding:NSUTF8StringEncoding]; } - (NSData *) XMLDataWithOptions:(NSUInteger) opts; { return [self _XMLDataWithOptions:opts format:_documentContentKind]; } @end