【问题标题】:NSXMLParser won't call foundDeclerationNameNSXMLParser 不会调用 foundDeclerationName
【发布时间】:2011-10-14 23:09:47
【问题描述】:

我有一个奇怪的问题- 我正在使用从 Internet 获取的数据解析 xml。数据是一个xml文件,我已经打印出来检查了,所以我知道它是合法的。

我有几个元素,每个元素都包含 1 个属性,并且还有内容。 解析器调用 DidSartElement,它检测到元素 - 属性确实在方法的 attributeDict 参数内。但是,由于某种原因,foundAttributeDecleration 不会被调用。

是否有任何已知的原因会发生这种情况,或者有什么方法可以解决这个问题?
天呐!

【问题讨论】:

    标签: objective-c attributes call nsxmlparser


    【解决方案1】:
    -(void)parser:(NSXMLParser *)parser
    foundAttributeDeclarationWithName:(NSString *)attributeName
                           forElement:(NSString *)elementName
                                 type:(NSString *)type
                         defaultValue:(NSString *)defaultValue
    

    不为处理元素属性而调用,它仅在解析器继续执行 DTD 并查找属性声明时被调用。

    要检索元素的属性,请使用attributeDict 参数。

    【讨论】:

    • 你 100% 确定吗?因为在其他情况下我使用了 NSXMLParser,它确实像我预期的那样工作,而不是你提到的方式。
    • @Niv - 是的,此方法在NSXMLParserDelegate Protocol Reference 的“处理 DTD”任务部分下注册,并且方法讨论与您描述的行为不符。
    • @Niv - 欢迎您 ;) 不要忘记阅读FAQ 中的 SO 问答流程。
    • 但是,我能知道具体属性的行号和列号吗?
    • attributeDict 的问题在于它的属性顺序似乎是不确定的......(AFAICT 他们是井号顺序?)这是一个问题的原因是你不能只是文本用于测试的 XML 之前/之后的差异...
    猜你喜欢
    • 1970-01-01
    • 2011-05-28
    • 2012-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-27
    • 2012-01-07
    相关资源
    最近更新 更多