gpt4 book ai didi

ios - NSXMLParser:尝试解析和解析外部实体时出错

转载 作者:行者123 更新时间:2023-12-03 22:07:35 27 4
gpt4 key购买 nike

我目前正在尝试使用外部已解析实体引用来解析包含另一个 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;

随着我的外部实体的定义被解析,相应的委托(delegate)方法被调用:
- (void)parser:(NSXMLParser *)parser foundExternalEntityDeclarationWithName:(NSString *)entityName publicID:(NSString *)publicID systemID:(NSString *)systemID

它通过 正确值 : entityName = "extern"和 systemID = "myGreatURI"

但是由于在 xml 中解析了引用,因此 NSXMLParser 错误 1549发生。

只有在发生此错误后,才会调用预期的委托(delegate)方法:
- (NSData *)parser:(NSXMLParser *)parser resolveExternalEntityName:(NSString *)entityName systemID:(NSString *)systemID 

但是现在systemID是 !此外,NSXMLParser 没有按预期使用我返回的数据。不是解析它,而是将完整的 XML 检测为一个字符串,通过以下方法交给我:
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string

如您所见,我有几个不同的问题。不幸的是,谷歌和苹果文档让我一无所知。

最佳答案

据我了解,
NSXMLParser 总是在 resolveExternalEntityName 中返回 systemID = nil,因为到这里的时候,systemID ressource 应该已经被加载了,如果检索失败,则意味着 systemID 无效或其他什么,所以无论如何它都没用。

关于ios - NSXMLParser:尝试解析和解析外部实体时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11991230/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com