Objective c 如何获得DTD';使用NSXMLParser设置公共和系统ID

Objective c 如何获得DTD';使用NSXMLParser设置公共和系统ID,objective-c,cocoa,dtd,nsxmlparser,Objective C,Cocoa,Dtd,Nsxmlparser,我试图通过NSXMLParser检索XML文档中DTD的公共ID和系统ID。虽然principal中的NSXMLParser提供了publicID和systemID选择器,但它们似乎不适合我。doctype标记如下所示: <!DOCTYPE Article PUBLIC "-//SoftQuad Software//DTD Journalist v2.0 20000501//EN" "file:///C:/Program%20Files/Corel/XMetaL%204/Author/Ru

我试图通过
NSXMLParser
检索XML文档中DTD的公共ID和系统ID。虽然principal中的
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">
在代理的
parserdistartdocument:
中,我尝试访问ID:

NSLog(@"%@ : %@", [parser publicID], [parser systemID]);
但我只看到

(null) : (null)
从文件中:

您可以在解析操作开始或发生错误后调用此方法

所以我认为这应该已经在
parserdistartdocument:
中起作用了,但是我尝试用不同的委托方法调用这些选择器(比如
parser:didStartElement:namespaceURI:qualifiedName:attributes:
),但没有成功


你知道我做错了什么吗?

你可以试试另一个解析器

提供了基于expat的NSXMLParser的替代品

您可能还会发现本文很有趣,比较了iPhone上各种XML解析器的性能

(null) : (null)