2010-07-21 5 views
2

Dites que j'ai un XML invalide. Pour une raison quelconque, TouchXML le voit toujours comme un objet valide.TouchXML - XML ​​invalide ne retourne pas l'objet d'erreur

Par exemple:

NSString *str = @"?> obviously invalid!"; 
NSData *data = [str dataUsingEncoding:NSASCIIStringEncoding]; 
NSError *parseError = nil; 
CXMLDocument *document = [[[CXMLDocument alloc] initWithData:data encoding:NSASCIIStringEncoding options:0 error:&parseError] autorelease]; 
NSLog(@"Error %i......%@", [parseError code], [parseError localizedFailureReason]); 
NSLog(@"Document ......%@", [document description]); 

La sortie est:

Error 0......(null) 
    Document ......<CXMLDocument 0x6f05710 [0x6f274c0]> <?xml version="1.0" encoding="us-ascii"?> 

Quelqu'un sait-il pourquoi cela se passe? Je ne range pas le XML ...

Merci!

Répondre

0

J'ai trouvé un moyen de contourner cela. A l'intérieur

- (id)initWithData:(NSData *)inData encoding:(NSStringEncoding)encoding options:(NSUInteger)inOptions error:(NSError **)outError 

Pour mes fins, j'ai changé

theDoc = xmlReadMemory([inData bytes], [inData length], NULL, enc, XML_PARSE_RECOVER | XML_PARSE_NOWARNING); 

à

theDoc = xmlReadMemory([inData bytes], [inData length], NULL, enc, XML_PARSE_DTDVALID | XML_PARSE_NOWARNING); 
Questions connexes