我使用NSXMLParser来解析大型XML文件 - 很好但是:) 我无法让解析器从DTD解析外部实体。
我用谷歌搜索文档和旧邮件... 我确实设置了parser.shouldResolveExternalEntities = YES
我得到: - (NSData *)解析器:(AQXMLParser *)解析器resolveExternalEntityName:(NSString *)name systemID:(NSString *)systemID 但我不知道该返回什么... 实体在DTD中定义......
如果我能够获得DTD中的条目,我会自己构建一个表 - (void)parser:(AQXMLParser *)解析器foundInternalEntityDeclarationWithName:(NSString *)name value:(NSString *)value;
但是,NSXMLParser不应该为我做实体替换吗? 不知怎的...... :)
在任何情况下,我都不知道如何继续
交叉发布@ cocoa-dev@lists.apple.com
答案 0 :(得分:2)
由于DTD中的URI不一定指向引用对象或实体的实际位置,因此委托方法的作用是解析外部实体:
在解析器中:resolveExternalEntityName:systemID:
使用NSXMLDTD加载外部DTD(systemID)和
使用NSXMLDTD返回的NSXMLDTDNode对象:entityDeclarationForName:entityName来解析实体