我正在尝试通过NSXMLParser
检索XML文档中DTD的公共ID和系统ID。虽然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:
中,我尝试访问ID:
NSLog(@"%@ : %@", [parser publicID], [parser systemID]);
但我只看到
(null) : (null)
来自文档:
一旦解析操作开始或发生错误,您就可以调用此方法。
所以我认为这应该在parserDidStartDocument:
中已经有效但是我试图用不同的委托方法调用这些选择器(比如parser:didStartElement:namespaceURI:qualifiedName:attributes:
但是没有成功。
任何想法我做错了什么?
答案 0 :(得分:0)
您可以试用另一个解析器。
http://www.robbiehanson.com/expat.html提供了基于expat的NSXMLParser替代品。
您可能还会发现这篇文章很有趣,比较iPhone上各种XML解析器的性能。
http://www.raywenderlich.com/553/how-to-chose-the-best-xml-parser-for-your-iphone-project