我目前正在尝试使用外部已解析实体引用来解析包含另一个 XML 的 XML。但是,NSXMLParser 会引发错误,而不是解析包含的 XML。
xml 看起来有点像这样:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE parentElement[
<!ENTITY extern SYSTEM "myGreatURI">
]>
<parentElement
attribute1="1"
attribute2="2"
...>
<childElement>
&extern;
<parentElement
..>
<childElement>
我已启用解析器来解析外部引用:
self.parser.shouldResolveExternalEntities = TRUE;
随着我的外部实体的定义被解析,相应的委托方法被调用:
- (void)parser:(NSXMLParser *)parser foundExternalEntityDeclarationWithName:(NSString *)entityName publicID:(NSString *)publicID systemID:(NSString *)systemID
它传递了正确的值: entityName = "extern" 和 systemID = "myGreatURI"
但是当在 xml 中解析引用时,会发生 NSXMLParser 错误1549。
只有在发生此错误后,才会调用预期的委托方法:
- (NSData *)parser:(NSXMLParser *)parser resolveExternalEntityName:(NSString *)entityName systemID:(NSString *)systemID
但是现在 systemID 是nil!此外,NSXMLParser 没有按预期使用我返回的数据。不是解析它,而是将完整的 XML 检测为一个字符串,通过以下方法交给我:
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
如您所见,我有几个不同的问题。不幸的是,谷歌和苹果文档让我一无所知。