2010-08-09 8 views
0

J'essaie de récupérer les ID public et système d'une DTD dans un document XML via NSXMLParser. Alors que NSXMLParser en principal offre publicID et systemID sélecteurs, ils ne semblent pas fonctionner pour moi. La balise DOCTYPE ressemble à ceci:Comment obtenir les identifiants publics et système d'une DTD avec NSXMLParser

<!DOCTYPE Article PUBLIC "-//SoftQuad Software//DTD Journalist v2.0 20000501//EN" "file:///C:/Program%20Files/Corel/XMetaL%204/Author/Rules/journalist.dtd"> 

Voici mon code (le fichier a été ouvert via NSFileHandle « s readDataToEndOfFile:

NSXMLParser *parser = [[NSXMLParser alloc] initWithData:data]; 
[parser setDelegate:self]; 
BOOL parseSuccessful = [parser parse]; 

Dans parserDidStartDocument: de délégué j'essaie d'accéder aux ID:

NSLog(@"%@ : %@", [parser publicID], [parser systemID]); 

Mais je ne vois que

(null) : (null) 

De la documentation:

Vous pouvez appeler cette méthode une fois une opération d'analyse syntaxique a commencé ou après une erreur se produit.

donc je pense que cela devrait fonctionner déjà parserDidStartDocument: mais j'ai essayé d'appeler ces sélecteurs dans différentes méthodes de délégués (comme parser:didStartElement:namespaceURI:qualifiedName:attributes: mais sans succès.

Toutes les idées que je fais mal?

Répondre