【问题标题】:How NSXMLParser is workingNSXMLParser 是如何工作的
【发布时间】:2011-08-04 05:58:02
【问题描述】:

我是 xcode 开发的新手。我正在尝试实现一个 Web 服务调用以从服务器获取值并将其显示在表格视图上。我从网络获得了一些示例代码以及一些如何使其工作的方法。但我仍然不知道解析器如何遍历 xml 节点。 谁能帮我找出 xcode 中 xml 解析器的工作原理以及 它如何在没有 for 循环的情况下通过所有节点

【问题讨论】:

    标签: iphone xcode nsxmlparser


    【解决方案1】:

    实际上有五个委托方法

    1.didstartdocument

    2.didstartelement

    3.找到的字符

    4.didendelement

    5.didenddocument

    在这第一个方法是用于启动文档。 第二种方法是如果找到任何起始元素,则如果起始元素有数据,则转到找到的字符。之后进入didendelement。之后再次进入didstartelement。它重复进行。如果文档结束,则进入didenddocument。

    【讨论】:

    • 谢谢你,Sachin,你的回复非常接近我想要的。我认为这会对我有所帮助。
    【解决方案2】:

    NSXMLParser 从您那里获取数据并解析数据,在解析时它会发送适当的委托将数据返回给您。它的工作原理类似于进行基本的 XML 解析,然后以委托的形式向您发送数据——因此您不需要从一端循环来解析 XML。

    【讨论】:

    • 感谢 Girish 的快速响应。但我仍然不清楚如何在某个阶段中断解析。如果我在第一行遇到特定的 xml 节点(标签),我想停止解析xml 网络响应。
    【解决方案3】:

    这很简单,为了它的正确流程,你可以在它的方法上放置断点,然后检查你会理解的所有参数的值。更多细节请考虑这些放置断点的方法

    [self parseXMLFileAtURL:path];
    
    - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
    
    - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
    
    - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
    

    在 didStartElement 中检测到您的元素,您将内存分配给要在其中存储值的对象,并且在 didEndElement 中您拥有存储在永久数组中的值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-20
      • 1970-01-01
      • 2017-07-24
      • 2016-11-13
      • 2017-10-11
      • 2021-10-13
      • 2011-02-24
      相关资源
      最近更新 更多