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)