代码之家  ›  专栏  ›  技术社区  ›  David Reynolds

NSXMLParser是否使用空值?

  •  0
  • David Reynolds  · 技术社区  · 14 年前

    我有一些XML,如下所示:

    <?xml version='1.0'?>
    <methodResponse>
        <params>
            <param>
                <value><array><data>
                    <value><array><data>
                        <value><dateTime.iso8601>20100508T14:49:56</dateTime.iso8601></value>
                        <value><string></string></value>
                        <value><string>comment</string></value>
                        <value><string></string></value>
                        <value><string>Milestone milestone1 deleted</string></value>
                        <value><int>1</int></value>
                    </data></array></value>
                </data></array></value>
            </param>
        </params>
    </methodRepsonse>
    

    NSXMLParser似乎不给任何空白数据返回任何数据,导致一个数组中有4个项目而不是6个。

    对于NSXMLPARSER,我能做什么,使它返回空白值的空字符串,这样我就可以在返回数据时维护数据的顺序?

    2 回复  |  直到 14 年前
        1
  •  1
  •   imaginaryboy    14 年前

    因此,在使用一个只打印出解析过程中发生的事情的委托创建了一个快速示例之后,我没有发现被解析的内容有任何问题。

    不过,我怀疑您在调用 didStartElement... didEndElement... 你应该得到一个 foundCharacters... 用空字符串调用?我的问题是基于你对问题标题的措辞,因为没有所谓的“空值”,要么有值,要么没有值。

    想象一下,您的XML包含<string/>而不是完全等效的<string></string>。您仍然会收到开始/结束通知。

    你应该创造 NSMutableString (可能是用于<string>元素的类型)中 迪斯塔特莱姆。。。 基础字符。。。 迪丹丹。。。 .

    如果您真的想变得更健壮,那么如果您在字符串结束之前找到新元素的开始,假设它实际上是一个错误,那么您还需要检测一个错误条件。

        2
  •  0
  •   willcodejavaforfood    14 年前

    我不太清楚你的问题。NSXMLParser至少会报告元素的开始和结束。这还不够让他们按正确的顺序排列吗?