Я пытаюсь получить общедоступные и системные идентификаторы для DTD в документе XML через NSXMLParser
.Хотя NSXMLParser
в принципе предлагает publicID
и systemID
селекторы, они, похоже, не работают для меня.Тег doctype выглядит следующим образом:
<!DOCTYPE Article PUBLIC "-//SoftQuad Software//DTD Journalist v2.0 20000501//EN" "file:///C:/Program%20Files/Corel/XMetaL%204/Author/Rules/journalist.dtd">
Вот мой код (файл был открыт с помощью NSFileHandle
'readDataToEndOfFile
:
NSXMLParser *parser = [[NSXMLParser alloc] initWithData:data];
[parser setDelegate:self];
BOOL parseSuccessful = [parser parse];
В делегате parserDidStartDocument:
Iпопробуйте получить доступ к идентификаторам:
NSLog(@"%@ : %@", [parser publicID], [parser systemID]);
Но я вижу только
(null) : (null)
Из документации:
Вы можете вызвать этот метод после операции разбораначался или после возникновения ошибки.
Так что я думаю, что это должно работать уже в parserDidStartDocument:
, но я пытался вызывать эти селекторы в различных методах делегата (например, parser:didStartElement:namespaceURI:qualifiedName:attributes:
, но безуспешно.
Есть идеи, что я делаю не так?