【问题标题】:Does NSXMLParser eat blank values?NSXMLParser 吃空白值吗?
【发布时间】:2010-09-25 16:46:39
【问题描述】:

我有一些如下所示的 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 做些什么,让它为空值返回一个空字符串,以便在返回数据时保持数据的顺序?

【问题讨论】:

    标签: iphone objective-c nsxmlparser


    【解决方案1】:

    因此,在使用仅打印出解析过程中发生的事情的代表快速生成示例后,我看不出所解析的内容有任何问题。

    但是,我怀疑您依赖于错误的期望,即在调用 didStartElement...didEndElement... 之间应该得到一个带有空字符串的 foundCharacters... 调用?我的问题是基于您对问题标题的表述方式,因为没有“空白值”之类的东西。要么有值,要么没有。

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

    当找到 时,您应该在 didStartElement... 中创建您的 NSMutableString(可能是您用于 元素的类型),并在调用 foundCharacters... 时附加到该字符串(它可以使用块中的值多次调用),并在 didEndElement... 上完成时将其扔到您的数组中。

    如果您真的想变得更健壮,那么如果您在字符串结束之前发现一个新元素的开头,那么您也希望检测到错误条件,假设它实际上对您来说是一个错误。

    【讨论】:

      【解决方案2】:

      不太确定我是否理解您的问题。 NSXMLParser 至少会报告元素的开始和结束。以正确的顺序排列它们还不够吗?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多